gpt4 book ai didi

python - 将数据框从长数据框转换为宽数据框,同时保留值的顺序(dtype datetime)

转载 作者:行者123 更新时间:2023-11-28 20:56:55 25 4
gpt4 key购买 nike

我有一个名为 df 的数据框,它看起来与此类似(除了与每个 Client ID 关联的 Visit Date 列中的条目数> 上升到 74,并且有数百个唯一的 Client ID - 我在这里进行了简化)。

Visit Date  Client ID
2016-05-25 C1009404
2016-06-30 C1009404
2016-07-14 C1009404
2016-07-20 C1009405
2016-08-03 C1009405
2016-08-08 C1009405
2016-08-10 C1009405
2016-08-15 C1009406
2016-08-17 C1009406
2016-08-24 C1009406

我想把它从长到宽转换成这样:

Client ID  Visit_1     Visit_2     Visit_3     Visit_4
C1009404 2016-05-25 2016-06-30 2016-07-14
C1009405 2016-07-20 2016-08-03 2016-08-08 2016-08-10
C1009406 2016-08-15 2016-08-17 2016-08-24

我试过下面的代码:

df_wide = df.groupby(['Client ID'], as_index=False).agg(lambda x: ', '.join(set(x.astype(str))))
df_wide = pd.concat([df_wide[['Client ID','ENROLLED_DT']], df_wide['VISIT_DT'].str.split(',', expand=True)], axis=1)
df_wide = df_wide.rename(columns={0: 'Visit_1', 1: 'Visit_2', 2: 'Visit_3', 3: 'Visit_4'})

它产生了预期的结果,但日期不再按顺序排列。我该怎么做才能保持日期顺序,从左到右升序?

最佳答案

您可能需要创建另一个键来帮助pivot

df.assign(key=df.groupby('ClientID').cumcount()+1).\
pivot('ClientID','key','VisitDate').\
fillna('').\
add_prefix('Visit_')
Out[152]:
key Visit_1 Visit_2 Visit_3 Visit_4
ClientID
C10094042 2016-05-25 2016-06-30 2016-07-14
C10094056 2016-07-20 2016-08-03 2016-08-08 2016-08-10
C10094061 2016-08-15 2016-08-17 2016-08-24

关于python - 将数据框从长数据框转换为宽数据框,同时保留值的顺序(dtype datetime),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54028615/

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