你可以使用pd.concat
,groupby
並採取基於指標數據的大熊貓徵對準的優勢這樣來做:
輸入DF:
df = pd.DataFrame({'type1':['food','clothing','food','clothing'],'type2':['me','me','you','you'],'col1':[300,500,600,200],'col2':[200,600,500,700]})
pd.concat([df.set_index(['type1','type2'])
.groupby('type1')
.apply(lambda x: x.iloc[0]-x.iloc[1])
.assign(type2='us')
.set_index('type2', append=True),
df.set_index(['type1','type2'])]).reset_index()
大熊貓年長的是0.20.0
pd.concat([df.set_index(['type1','type2'])
.groupby(level=0)
.apply(lambda x: x.iloc[0]-x.iloc[1])
.assign(type2='us')
.set_index('type2', append=True),
df.set_index(['type1','type2'])]).sort_index(level=[1,0]).reset_index()
輸出:
type1 type2 col1 col2
0 clothing us 300 -100
1 food us -300 -300
2 food me 300 200
3 clothing me 500 600
4 food you 600 500
5 clothing you 200 700
'transport'數據幀大熊貓做到這一點,像'df.T'並追加列,然後運回 – Wen
請考慮了投票@ ScottBoston的回答除了接受它的一種方式。謝謝。 – piRSquared