data={'Claim Number':[200932768,102349182,200943556,200932768,300943556,400943556],'Reserve':[200000,50000,0,200000,5000,0],'Paid':[0,139000,0,0,139000,0],'Key':['Feb','Feb','Feb','March','March','March']}
df=pd.DataFrame(data)
table=df.pivot_table(index='Claim Number',columns='Key',values=['Reserve','Paid'],fill_value=0)
我正在尝试创建两个额外的列Change in Reserve,以及Change in Paid。
这将是[3月储备变化] - [2月储备变化]的差异,以及“付费”的变化。
我一直在做的是单挑坑“储备”和付费如下。
table=df.pivot_table(index='Claim Number',columns='Key',values=['Reserve'],fill_value=0)
table.reset_index(inplace=True)
table["Change in Reserve"]=table['March']-table['Feb']
但是,这种方法虽然提供了我想要的效率低下,因为我必须对“付费”进行相同的计算,并执行连接。是否有更简单的方法来执行所需的输出?
也许我使用数据透视表的方法是不必要的?
解决办法:
df_g = df.groupby(['Claim Number', 'Key']).sum().reset_index()
diff_claim = df_g['Claim Number'] == df_g['Claim Number'].shift()
reserve_change = df_g['Reserve'] - df_g['Reserve'].shift()
ls = pd.Series([])
for index, value in reserve_change.iteritems():
if diff_claim[index]:
ls[index] = reserve_change[index]
else:
ls[index] = None
df_g['change'] = ls








暂无数据