Python 如何将数据帧的行前进到下一个值?

Python 如何将数据帧的行前进到下一个值?,python,pandas,datetime,Python,Pandas,Datetime,My Pandas DataFrame包含一列未排序的日期作为字符串,结构为'20201029',依此类推。对于每个单元格,我希望将日期提前到下一个可用日期。见下文: import pandas as pd df1 = pd.DataFrame(data={'label' : ['asc', 'vas', 'fe3', 'aa2', 'g4s', 'zzs', '44s', '2ab'], 'original date' : ['20200

My Pandas DataFrame包含一列未排序的日期作为字符串,结构为'20201029',依此类推。对于每个单元格,我希望将日期提前到下一个可用日期。见下文:

import pandas as pd


df1 = pd.DataFrame(data={'label' : ['asc', 'vas', 'fe3', 'aa2', 'g4s', 'zzs', '44s', '2ab'], 
                        'original date'  : ['20200701', '20200701', '20200704', '20200709', '20200710', '20200710', '20200712', '20200714']})

# dates variable for sake of clarity, currently unused
dates = df1['original date'].drop_duplicates()

df2 = pd.DataFrame(data={'label' : ['asc', 'vas', 'fe3', 'aa2', 'g4s', 'zzs', '44s', '2ab'], 
                        'original date'  : ['20200701', '20200701', '20200704', '20200709', '20200710', '20200710', '20200712', '20200714'], 
                        'new date' : ['20200704', '20200704', '20200709', '20200710', '20200712', '20200712', '20200714', '']})
如您所见,每个原始日期都会与日期列表进行比较,并提前到下一个日期。20200701变为20200704,因为它是系列中的下一个日期

我已经看到了熊猫工作日功能中的自定义频率范围。但是,此解决方案似乎并不理想,因为我的日期不可预测且不稳定。

使用
map

df1['new date'] = df1['original date'].map(pd.Series(dates.values, 
                                                     dates.shift().values)
                                          )
输出:

  label original date  new date
0   asc      20200701  20200704
1   vas      20200701  20200704
2   fe3      20200704  20200709
3   aa2      20200709  20200710
4   g4s      20200710  20200712
5   zzs      20200710  20200712
6   44s      20200712  20200714
7   2ab      20200714       NaN