我有一个df
:
dates values
2020-01-01 00:15:00 38.61487
2020-01-01 00:30:00 36.905204
2020-01-01 00:45:00 35.136584
2020-01-01 01:00:00 33.60378
2020-01-01 01:15:00 32.306791999999994
2020-01-01 01:30:00 31.304574
我正在创建一个名为 start
的新列,如下所示:
df = df.rename(columns={'dates': 'end'})
df['start']= df['end'].shift(1)
当我这样做时,我得到以下结果:
end values start
2020-01-01 00:15:00 38.61487 NaT
2020-01-01 00:30:00 36.905204 2020-01-01 00:15:00
2020-01-01 00:45:00 35.136584 2020-01-01 00:30:00
2020-01-01 01:00:00 33.60378 2020-01-01 00:45:00
2020-01-01 01:15:00 32.306791999999994 2020-01-01 01:00:00
2020-01-01 01:30:00 31.304574 2020-01-01 01:15:00
我想用
填充该NaT
值
2020-01-01 00:00:00
如何做到这一点?
最佳答案
使用Series.fillna
与日期时间
s,例如通过 Timestamp
:
df['start']= df['end'].shift().fillna(pd.Timestamp('2020-01-01'))
或者如果 pandas 0.24+ 带有 fill_value
参数:
df['start']= df['end'].shift(fill_value=pd.Timestamp('2020-01-01'))
如果所有日期时间都是规则的,则始终可以通过 offsets.DateOffset
减去 15 分钟
的差值:
df['start']= df['end'] - pd.offsets.DateOffset(minutes=15)
print (df)
end values start
0 2020-01-01 00:15:00 38.614870 2020-01-01 00:00:00
1 2020-01-01 00:30:00 36.905204 2020-01-01 00:15:00
2 2020-01-01 00:45:00 35.136584 2020-01-01 00:30:00
3 2020-01-01 01:00:00 33.603780 2020-01-01 00:45:00
4 2020-01-01 01:15:00 32.306792 2020-01-01 01:00:00
5 2020-01-01 01:30:00 31.304574 2020-01-01 01:15:00
关于python - 如何填写列中的第一个日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60059300/