以下pandas DataFrame是我需要处理的一个示例:
Group Amount
1 1 100
2 1 300
3 1 400
4 1 700
5 2 500
6 2 900
这是计算后我想要的结果:
Group Amount Difference
1 1 100 100
2 1 300 200
3 1 400 100
4 1 700 300
5 2 500 500
6 2 900 400
我知道df [“Difference”] = df [“Amount”] - df [“Amount”] .shift(-1)可以产生所有行之间的差异,但是我可以为我遇到的问题做些什么像这样需要一个团队作为条件?
答案 0 :(得分:2)
groupby
并在“金额”列上调用transform
,另外调用fillna
并传递“金额”列:
In [110]:
df['Difference'] = df.groupby('Group')['Amount'].transform(pd.Series.diff).fillna(df['Amount'])
df
Out[110]:
Group Amount Difference
1 1 100 100
2 1 300 200
3 1 400 100
4 1 700 300
5 2 500 500
6 2 900 400