我有以下形式的数据:
6460 2001-07-24 00:00:00 67.5 75.1 75.9 71.0 75.2 81.8
6490 2001-06-24 00:00:00 68.4 74.9 76.1 70.9 75.5 82.7
6520 2001-05-25 00:00:00 69.6 74.7 76.3 70.8 75.5 83.2
6550 2001-04-25 00:00:00 69.2 74.6 76.1 70.6 75.0 83.1
6580 2001-03-26 00:00:00 69.1 74.4 75.9 70.5 74.3 82.8
6610 2001-02-24 00:00:00 69.0 74.0 75.3 69.8 73.8 81.9
6640 2001-01-25 00:00:00 68.9 73.9 74.6 69.7 73.5 80.0
6670 2000-12-26 00:00:00 69.0 73.5 75.0 69.5 72.6 81.8
6700 2000-11-26 00:00:00 69.8 73.2 75.1 69.5 72.0 82.7
6730 2000-10-27 00:00:00 70.3 73.1 75.0 69.4 71.3 82.6
6760 2000-09-27 00:00:00 69.4 73.0 74.8 69.4 71.0 82.3
6790 2000-08-28 00:00:00 69.6 72.8 74.6 69.2 70.7 81.9
6820 2000-07-29 00:00:00 67.8 72.9 74.4 69.1 70.6 81.8我希望所有的日期之间有30天的差距。我知道如何将特定的日期或月份添加到datetime对象,如下所示
ndfd = ndf['Date'].astype('datetime64[ns]')
ndfd = ndfd.apply(lambda dt: dt.replace(day=15))但这没有考虑到每个月的天数差异。
如果我能够更改日期,只要它仍然在同一个月,我如何确保在我的数据中有一致的日期步长?
发布于 2019-03-13 00:20:21
您可以使用date_range
df['date'] = pd.date_range(start=df['date'][0], periods=len(df), freq='30D')发布于 2019-03-13 00:02:07
IIUC您可以更改日期列,如下所示:
import datetime
a = df.iloc[0,0] # first date, assuming date col is first
df['date'] = [a + datetime.timedelta(days=30 * i) for i in range(len(df))]发布于 2019-03-13 00:17:22
我还没有测试过,所以我不确定它是否像我想象的那样流畅。
您可以将第一天转换为序数,再加上30*i,然后再将其转换回来。
first_day=df.iloc[0]['date_column'].toordinal()
df['date']=(first_day+30*i for i in range(len(df))).fromordinalhttps://stackoverflow.com/questions/55125782
复制相似问题