【问题标题】:Getting days difference from dates in same column in a groupby in Pandas在 Pandas 的 groupby 中获取与同一列中日期的天数差异
【发布时间】:2022-01-15 03:21:13
【问题描述】:

我有一个这样的熊猫数据框:

user_id code earliest_date
A N18.1 2016-04-08
A N18.2 2017-06-08
A N18.3 2018-04-08
B N18.1 2016-06-16
B N18.2 2016-08-16
C N18.1 2021-01-11

在代码列中,值总是形成一个指定的列表,这里是 [N18.1,N18.2,N18.3] 等。

我想要一个数据框,它显示每个用户从代码 N18.x 依次前进到下一个所需的天数。我在想这样的事情:

user_id N18.1 -> N18.2 N18.2 -> N18.3
A 426 304
B 60 n/a
C n/a n/a

您的帮助将不胜感激。

【问题讨论】:

    标签: python pandas dataframe pivot pandas-groupby


    【解决方案1】:

    使用DataFrameGroupBy.diff 表示每个组的差异,为移位的code 创建帮助列并传递给DataFrame.pivot

    df['earliest_date'] = pd.to_datetime(df['earliest_date'])
    
    df['diff'] = df.groupby('user_id')['earliest_date'].diff().dt.days
    df['code1'] = df.groupby('user_id')['code'].shift() + '->' + df['code']
    
    df = df.pivot('user_id','code1','diff').drop(np.nan, axis=1)
    print (df)
    code1    N18.1->N18.2  N18.2->N18.3
    user_id                            
    A               426.0         304.0
    B                61.0           NaN
    C                 NaN           NaN
    

    【讨论】:

      猜你喜欢
      • 2020-09-29
      • 2015-08-23
      • 1970-01-01
      • 1970-01-01
      • 2017-11-01
      • 1970-01-01
      • 2019-05-17
      • 1970-01-01
      • 2020-01-04
      相关资源
      最近更新 更多