【发布时间】:2017-10-03 07:07:41
【问题描述】:
我有以下数据框:
id subid a
1 1 1 2
2 1 1 10
3 1 1 20
4 1 2 30
5 1 2 35
6 1 2 36
7 1 2 40
8 2 2 20
9 2 2 29
10 2 2 30
我想在“a”列上应用例如 pandas diff() 函数,但只要“id”或“subid”发生更改,并且想要将值存储在新列中,就应该重新应用该函数.
下面是我期望的df。
id subid a difference
1 1 1 2 NaN
2 1 1 10 8
3 1 1 20 10
4 1 2 30 NaN
5 1 2 35 5
6 1 2 36 1
7 1 2 40 4
8 2 2 20 NaN
9 2 2 29 9
10 2 2 30 1
正如可以在第 4 行和第 8 行观察到的那样,“id”或“subid”正在发生变化,因此存在 NaN 值,并且在连续行中计算 diff。
用过
df["difference"] = df["a"].diff()
这显然适用于整个列,而不是预期的方式。我曾尝试使用 groupby,但它以某种方式提供了额外的行。
提前感谢您的任何建议。
【问题讨论】:
标签: python pandas numpy dataframe