以下 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) 可以产生所有行之间的差异,但是我能为我遇到的问题做什么像这样需要一个group作为条件吗?
最佳答案
groupby
在“Group”上,并在“Amount”列上调用 transform
,另外调用 fillna
并传递“Amount”列:
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
关于python - Pandas 的条件转移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36159569/