gpt4 book ai didi

python - 在 python pandas 中用下一行的 Start_date 填充 End_date 列

转载 作者:行者123 更新时间:2023-12-01 00:58:13 24 4
gpt4 key购买 nike

我有一个如下的数据框(缓慢改变维度)。我想用键列标识的特定组的下一行 start_dt 填充 end_dt 列。

Key start_dt   end_dt
1 25-05-2019 NA
1 30-06-2019 NA
1 15-07-2019 NA
2 17-07-2019 NA
2 15-07-2019 NA

我希望为 end_dt 填充数据,如下所示。

Key start_dt   end_dt
1 25-05-2019 30-06-2019
1 30-06-2019 15-07-2019
1 15-07-2019 NA
2 17-07-2019 NA
2 15-07-2019 17-07-2019

我尝试过的内容如下。在按 start_dt 升序排序后,我为每个键组生成了一个以 2 开头的序列。然后创建一个具有 start_dt 和相同键列的新数据框,然后根据 start_dt 对它们进行排序,然后为从 1 开始的键组创建一个序列。

然后将这两个数据框与序列列连接起来。请帮忙寻找最佳解决方案。

df.sort_values(['start_dt'],ascending=[True],inplace=True)
df['seq'] = df.groupby(['key']).cumcount() + 2

temp= pd.DataFrame(df)
temp.sort_values(['start_dt'],ascending=[True],inplace=True)
temp=temp.rename(columns = {'start_dt':'end_dt'})
temp['seq'] = temp.groupby(['key']).cumcount() + 1

df = pd.merge(df, temp[['key','seq','end_dt']],how='left', on=['key','seq'])

最佳答案

看来你首先需要 sort_values通过Keystart_dt,然后您可以使用 GroupByshift分配以下start_dt:

df = df.sort_values(['Key', 'start_dt'])
df['end_dt'] = df.groupby('Key').start_dt.shift(-1)

print(df.reset_index(drop=True))

Key start_dt end_dt
0 1 15-07-2019 25-05-2019
1 1 25-05-2019 30-06-2019
2 1 30-06-2019 NaN
3 2 15-07-2019 17-07-2019
4 2 17-07-2019 NaN

关于python - 在 python pandas 中用下一行的 Start_date 填充 End_date 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56059306/

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