2019-02-27
阅读量:
630
将日期更改为pandas数据框中的特定条目
我在pandas中有一个数据框,它在索引中有错误:23:00:00到23:59:59之间的每个条目都有错误的日期。我需要在这两次之间的每个条目中减去一天(即24小时)。
我知道我可以获得这两次之间的条目df[df.hour == 23]
,因为df
我的数据帧在哪里。但是,我可以仅修改数据框索引的特定条目的日期吗?
重置会花费我更多的时间,因为我的数据帧索引不是均匀间隔,如下图所示(两个连续条目之间的步长为15分钟和30分钟)。另请注意图中最后三个条目中的错误日期:它应该是2018-02-05而不是2018-02-06。
我试着这样做
df[df.index.hour == 23].index.day = df[df.index.hour == 23].index.day - 1
但我明白了 AttributeError: can't set attribute
样本数据:
2018-02-05 22:00:00 271.8000
2018-02-05 22:30:00 271.5600
2018-02-05 22:45:00 271.4400
2018-02-06 23:15:00 271.3750
2018-02-06 23:30:00 271.3425
2018-02-06 00:00:00 271.2700
2018-02-06 00:15:00 271.2300
2018-02-06 00:45:00 271.1500
2018-02-06 01:00:00 271.1475
2018-02-06 01:30:00 271.1425
2018-02-06 01:45:00 271.1400
预期产量:
2018-02-05 22:00:00 271.8000
2018-02-05 22:30:00 271.5600
2018-02-05 22:45:00 271.4400
2018-02-05 23:15:00 271.3750
2018-02-05 23:30:00 271.3425
2018-02-06 00:00:00 271.2700
2018-02-06 00:15:00 271.2300
2018-02-06 00:45:00 271.1500
2018-02-06 01:00:00 271.1475
2018-02-06 01:30:00 271.1425
2018-02-06 01:45:00 271.1400
解决办法:可以试试TimeDeltas。
如果您的数据框具有日期时间索引,则应该能够直接从中减去。
df[df.hour == 23] - pd.Timedelta('1 days')
如果df.index类型是字符串,那么你应该首先更改类型,然后减去: df.index = pd.to_datetime(df.index)
df.index - pd.Timedelta('1 days')






评论(0)


暂无数据
推荐帖子
0条评论
0条评论
1条评论