繁体   English   中英

获取 Pandas 中 groupby 中同一列中日期的天数差异

[英]Getting days difference from dates in same column in a groupby in Pandas

我有一个 pandas dataframe 像这样:

用户身份 代码 最早的日期
一个 N18.1 2016-04-08
一个 N18.2 2017-06-08
一个 N18.3 2018-04-08
N18.1 2016-06-16
N18.2 2016-08-16
C N18.1 2021-01-11

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

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

用户身份 N18.1 -> N18.2 N18.2 -> N18.3
一个 426 304
60 不适用
C 不适用 不适用

您的帮助将不胜感激。

对每个组使用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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM