【发布时间】:2021-04-19 23:14:16
【问题描述】:
我给pandas 一个int 像这样:01142021223007,格式是'%m%d%Y%H%M%S'。这在 2020 年非常有效。例如:
12192020032906 -> 2020-12-19 03:29:06
自 2021 年以来,它给出了错误的日期:
01142021223007 -> 2021-11-04 22:30:07
应该是2021-01-14 22:30:07
代码:
self.df['time'] = pd.to_datetime(self.df['time'], format='%m%d%Y%H%M%S', errors = 'coerce')
我假设它只是跳过了01142020 开头的0,因此到达11 4 2020。有没有办法明确地说 MMDDYYYY? format ='%mm%dd%YYYY%HH%MM%SS' 不起作用。
我正在读取的 CSV 文件:
hum,moist,temp,time
81.1,40,26.30,12192020032906
83.1,38,25.80,12192020033006
85.6,39,25.30,12192020033106
87.3,38,24.90,12192020033206
89.4,38,24.50,12192020033306
90.2,38,24.20,12192020033407
90.9,39,23.90,12192020033506
91.5,38,23.70,12192020033607
92.2,38,23.40,12192020033706
...
57.0,15,25.60,01142021095906
53.6,47,24.30,01142021222407
53.7,44,24.30,01142021222419
54.1,45,24.30,01142021222540
54.9,43,24.30,01142021222706
55.2,43,24.20,01142021222806
55.5,44,24.20,01142021222906
55.7,43,24.20,01142021223007
生成的熊猫 df:
hum moist temp time
0 44.605 40 25.3 2020-12-19 03:29:06
1 45.705 38 24.8 2020-12-19 03:30:06
2 47.080 39 24.3 2020-12-19 03:31:06
3 48.015 38 23.9 2020-12-19 03:32:06
4 49.170 38 23.5 2020-12-19 03:33:06
... ... ... ... ...
22387 29.755 45 23.3 2021-11-04 22:25:40
22388 30.195 43 23.3 2021-11-04 22:27:06
22389 30.360 43 23.2 2021-11-04 22:28:06
22390 30.525 44 23.2 2021-11-04 22:29:06
22391 30.635 43 23.2 2021-11-04 22:30:07
【问题讨论】:
-
“我给 pandas 一个 int” - 从哪里 - 从文件中读取它还是什么?显示minimal reproducible example。
-
在编辑中添加了 CSV 和 pandas df
-
@ALollz 这很有道理,谢谢。从 csv 导入后我会转换列还是必须编辑 csv?
-
我会在 csv 中读取参数
dtype={'time': 'str'},这应该可以解决您的问题。没有那个 pandas 会尝试变得聪明,并将该列转换为 int,因为它们都是类似数字的值。 -
非常感谢,已答复!
标签: python pandas datetime python-datetime