两行之间的差异 pandas

difference between two rows pandas

我有一个数据框:

id|amount|date
20|-7|2017:12:25
20|-170|2017:12:26
20|7|2017:12:27

我想从 'amount' 列的每一行中减去另一行:

输出应该是这样的:

id|amount|date|amount_diff
20|-7|2017:12:25|0
20|-170|2017:12:26|-177
20|7|2017:12:27|-163

我使用了代码:

df.sort_values(by='date',inplace=True)

df['amount_diff'] = df['invoice_amount'].diff()

并获得输出为:

id|amount|date|amount_diff
20|-7|2017:12:25|163
20|-170|2017:12:26|-218
20|48|2017:12:27|0

你需要的IIUC:

df.sort_values(by='date',inplace=True)
df['amount_diff'] = df['amount'].add(df['amount'].shift()).fillna(0)
print (df)
   id  amount        date  amount_diff
0  20      -7  2017:12:25          0.0
1  20    -170  2017:12:26       -177.0
2  20       7  2017:12:27       -163.0

因为如果想减去你的解决方案应该有效:

df.sort_values(by='date',inplace=True)
df['amount_diff1'] = df['amount'].sub(df['amount'].shift()).fillna(0)
df['amount_diff2'] = df['amount'].diff().fillna(0)
print (df)
   id  amount        date  amount_diff1  amount_diff2
0  20      -7  2017:12:25           0.0           0.0
1  20    -170  2017:12:26        -163.0        -163.0
2  20       7  2017:12:27         177.0         177.0