【问题标题】:difference between two rows pandas两行熊猫之间的区别
【发布时间】:2018-03-08 06:13:48
【问题描述】:

我有一个数据框:

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

我想从另一行中减去“金额”列的每一行:

输出应该是这样的:

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

【问题讨论】:

  • 你能检查预期的输出吗?如果使用 df['amount_diff'] = df['invoice_amount'].diff() 得到与样本数据不同的输出。
  • (-1) 是做什么的,你能解释一下@jezrael 吗?
  • 这只是小费 ;)

标签: python pandas difference subtraction


【解决方案1】:

您需要的 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

【讨论】:

  • 很好的解决方案...这对我的问题也有很大帮助...非常感谢
猜你喜欢
  • 2013-02-21
  • 2018-03-07
  • 2017-01-11
  • 2021-05-08
  • 2019-12-10
  • 1970-01-01
  • 2017-12-05
  • 1970-01-01
相关资源
最近更新 更多