我正在这里寻求有关如何在Python / Panda中执行此操作的帮助:
我希望获取原始数据(如下),并通过一个具有多个cols(州,县和日期)的组来查找多个cols(cnt_a和cnt_b)的每日差异。
我一直在尝试不同的方法,但似乎无法解决“检查重复项”问题
df.cnt_a = df.sort_values(['state','county','date']).groupby['state','county','date','cnt_a'].diff(-1)
尝试将其拆分以一次修复一件事:
df1 = df.sort_values(['state','county','date'])
df2 = df1.groupby(['state','county'])['cnt_a'].diff()
原始数据。 => df
date county state cnt_a cnt_b
2020-06-13 Bergen New Jersey 308 11
2020-06-14 Bergen New Jersey 308 11
2020-06-15 Bergen New Jersey 320 15
2020-06-12 Union New Jersey 100 3
2020-06-13 Union New Jersey 130 4
2020-06-14 Union New Jersey 150 5
2020-06-12 Bronx New York 200 100
2020-06-13 Bronx New York 210 200
想要的输出
date county state cnt_a cnt_b daydiff_a daydiff_b
2020-06-13 Bergen New Jersey 308 11 0 0
2020-06-14 Bergen New Jersey 308 11 0 0
2020-06-15 Bergen New Jersey 320 15 12 4
2020-06-12 Union New Jersey 100 3 0 0
2020-06-13 Union New Jersey 130 4 30 1
2020-06-14 Union New Jersey 150 5 20 1
2020-06-12 Bronx New York 200 100 0 0
2020-06-13 Bronx New York 210 200 10 100
答案 0 :(得分:1)
df
进行排序很重要,因为df.groupby
将被排序。如果未首先对df
进行排序,则来自.groupby
的联接列将与df
的顺序不同。
df
按'state'
,'country'
和'date'
的顺序排列,但是{{1 }}。'date'
上的.groupby
,并将.groupby
聚合到所需的列。'state'
(具有0)和'country'
.diff
(基于索引)到groupby对象。
fillna
,或使用.join
更改列标题。df