Ren*_*nan 3 pandas pandas-groupby
我有一个这样的数据集:
state,date,events_per_day
AM,2020-03-01,100
AM,2020-03-02,120
AM,2020-03-15,200
BA,2020-03-16,80
BA,2020-03-20,100
BA,2020-03-29,150
RS,2020-04-01,80
RS,2020-04-05,100
RS,2020-04-11,160
Run Code Online (Sandbox Code Playgroud)
现在我需要计算每组第一行中的日期与当前行中的日期之间的差异。即每组的第一行:
最后我想要的结果是:
state,date,events_per_day,days_after_first_event
AM,2020-03-01,100,0
AM,2020-03-02,120,1 <--- 2020-03-02 - 2020-03-01
AM,2020-03-15,200,14 <--- 2020-03-14 - 2020-03-01
BA,2020-03-16,80,0
BA,2020-03-20,100,4 <--- 2020-03-20 - 2020-03-16
BA,2020-03-29,150,13 <--- 2020-03-29 - 2020-03-16
RS,2020-04-01,80,0
RS,2020-04-05,100,4 <--- 2020-04-05 - 2020-04-01
RS,2020-04-11,160,10 <--- 2020-04-11 - 2020-04-01
Run Code Online (Sandbox Code Playgroud)
我发现如何使用 pandas 按组计算时间差?这几乎就是我想要的。但是, diff() 返回连续行之间的差异,我需要当前行和第一行之间的差异。
我怎样才能做到这一点?
选项 3:groupby.transform
df['days_since_first'] = df['date'] - df.groupby('state')['date'].transform('first')
Run Code Online (Sandbox Code Playgroud)
输出
state date events_per_day days_since_first
0 AM 2020-03-01 100 0 days
1 AM 2020-03-02 120 1 days
2 AM 2020-03-15 200 14 days
3 BA 2020-03-16 80 0 days
4 BA 2020-03-20 100 4 days
5 BA 2020-03-29 150 13 days
6 RS 2020-04-01 80 0 days
7 RS 2020-04-05 100 4 days
8 RS 2020-04-11 160 10 days
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1224 次 |
| 最近记录: |