熊猫行之间的区别由多个条件



所以我现在有这个挑战。我有一个熊猫df(超过3000万行(,如下所示:

Name  | State | Date       | Income
____________________________________
Name1 | Tx    | 2019-01-26 | $100
Name2 | CA    | 2019-01-26 | $500
Name3 | LA    | 2019-01-26 | $200
Name1 | Tx    | 2019-02-26 | $110
Name2 | CA    | 2019-02-26 | $520
Name3 | LA    | 2019-02-26 | $210

如您所见,我有 2 列来标识一个人(他的名字和州(,然后是 1 列用于时间戳(随月变化(,我试图实现的是获取每个人的月份之间的差异,结果如下:

Name  | State | Date       | Income | Variation
____________________________________
Name1 | Tx    | 2019-01-26 | $100   |  NaN
Name2 | CA    | 2019-01-26 | $500   |  NaN
Name3 | LA    | 2019-01-26 | $200   |  NaN
Name1 | Tx    | 2019-02-26 | $110   |  10
Name2 | CA    | 2019-02-26 | $480   | -20
Name3 | LA    | 2019-02-26 | $210   |  10

以此类推,未来几个月 我找到了diff函数,但我不知道如何指定必须与相同的名称和状态匹配,但上个月

你应该按Date排序,并在['Name', 'State']上使用groupby转换。此解决方案应该有效:

df['Variation'] = (df.sort_values('Date').groupby(['Name', 'State'])['Income']
.transform(lambda x: x.diff()))

这应该像一个魅力:

df['Variation'] = df.groupby('State')['Income'].diff()

最新更新