gpt4 book ai didi

pandas - 第一行和当前行之间的差异,按组

转载 作者:行者123 更新时间:2023-12-01 21:39:46 25 4
gpt4 key购买 nike

我有这样一个数据集:

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

现在我需要计算每组第一行中的日期与当前行中的日期之间的差异。即每组的第一行:

  • 对于组“AM”,第一个日期是 2020-03-01;
  • “BA”组的第一个日期是 2020-03-16;
  • “RS”组是 2020-04-01。

最后,我想要的结果是:

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

我找到了 How to calculate time difference by group using pandas?几乎是我想要的。但是,diff() 返回连续行之间的差异,我需要当前行与第一行之间的差异。

我该怎么做?

最佳答案

选项 3:groupby.transform

df['days_since_first'] = df['date'] - df.groupby('state')['date'].transform('first')

输出

  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

关于pandas - 第一行和当前行之间的差异,按组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61530140/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com