Python 如何将数据帧的行前进到下一个值?
My Pandas DataFrame包含一列未排序的日期作为字符串,结构为'20201029',依此类推。对于每个单元格,我希望将日期提前到下一个可用日期。见下文: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
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