![](/img/trans.png)
[英]Python - Pandas - Groupby - Value (not days) difference between two dates
[英]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.