簡體   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