我有一个如下数据框(尺寸缓慢变化)。我想用键列标识的特定组的下一行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开始的序列。
然后将这两个数据帧与sequence列连接在一起。请提供最佳解决方案。
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'])