【发布时间】:2020-05-16 22:08:41
【问题描述】:
以下是我的 df 示例
date value
0006-03-01 00:00:00 1
0006-03-15 00:00:00 2
0006-05-15 00:00:00 1
0006-07-01 00:00:00 3
0006-11-01 00:00:00 1
2009-05-20 00:00:00 2
2009-05-25 00:00:00 8
2020-06-24 00:00:00 1
2020-06-30 00:00:00 2
2020-07-01 00:00:00 13
2020-07-15 00:00:00 2
2020-08-01 00:00:00 4
2020-10-01 00:00:00 2
2020-11-01 00:00:00 4
2023-04-01 00:00:00 1
2218-11-12 10:00:27 1
4000-01-01 00:00:00 6
5492-04-15 00:00:00 1
5496-03-15 00:00:00 1
5589-12-01 00:00:00 1
7199-05-15 00:00:00 1
9186-12-30 00:00:00 1
如您所见,数据包含一些拼写错误的日期。
问题:
- 如何将此列转换为 dd.mm.yyyy 格式?
- 当 Year 大于 2022 时,我们如何替换行?截至 01.01.2100
- 当年份小于 2005 时,我们如何删除所有行?
最终的输出应该是这样的。
date value
20.05.2009 2
25.05.2009 8
26.04.2020 1
30.06.2020 2
01.07.2020 13
15.07.2020 2
01.08.2020 4
01.10.2020 2
01.11.2020 4
01.01.2100 1
01.01.2100 1
01.01.2100 1
01.01.2100 1
01.01.2100 1
01.01.2100 1
01.01.2100 1
01.01.2100 1
我尝试使用 to_datetime 转换列,但失败了。
df[col] = pd.to_datetime(df[col], infer_datetime_format=True)
Out of bounds nanosecond timestamp: 5-03-01 00:00:00
感谢任何人的帮助!
【问题讨论】:
-
越界错误是因为 Pandas 以纳秒分辨率表示时间戳:stackoverflow.com/questions/32888124/…