gpt4 book ai didi

python - 值错误 : unconverted data remains on Pandas DataFrame

转载 作者:太空狗 更新时间:2023-10-30 02:46:01 30 4
gpt4 key购买 nike

数据 - 这是我在 Pandas DataFrame 中的数据

CallDateAndTimeStart
01/01/2010 00:26:28.003613 MST
01/01/2010 00:28:54.230713 MST
01/02/2008 14:12:11 MST
05/19/2010 09:12:32.080728 MST

我尝试将列 dtype 更改为 datetime64[ns]

df['CallDateAndTimeStart'] = pandas.to_datetime(df['CallDateAndTimeStart'],
format='%m/%d/%Y %H:%M:%S')

错误消息 - 没有清理数据,我得到以下错误:

File "C:\Python27\lib\site-packages\pandas\tseries\tools.py", line 308, in _convert_listlike raise e
ValueError: unconverted data remains: .003613 MST

问题

如何更正我的数据框列,以便它可以转换为日期时间类型?我发布了我的答案,但有更好的答案吗?谢谢。

最佳答案

您收到一个错误,因为您没有定义微秒和时区的格式。

如果所有行的格式相同,则正确的格式为:

df['CallDateAndTimeStart'] = pandas.to_datetime(df['CallDateAndTimeStart'],
format='%m/%d/%Y %H:%M:%S.%f %Z')

由于并非所有行的格式都相同,最好的方法是让 pandas 推断格式而不声明它:

df['CallDateAndTimeStart'] = pandas.to_datetime(df['CallDateAndTimeStart'])

输出:

        CallDateAndTimeStart
0 2010-01-01 00:26:28.003613
1 2010-01-01 00:28:54.230713
2 2008-01-02 14:12:11.000000
3 2010-05-19 09:12:32.080728

请注意,在此解决方案中,时区被忽略,因为 MST 未被识别,但您可以使用 tz_convert 将日期时间对象转换为正确的时区。此外,如果您对微秒不感兴趣,一旦它是日期时间对象,您可以轻松地将其四舍五入:

df['CallDateAndTimeStartRounded'] = df['CallDateAndTimeStart'].dt.floor('s')

输出:

        CallDateAndTimeStart CallDateAndTimeStartRounded
0 2010-01-01 00:26:28.003613 2010-01-01 00:26:28
1 2010-01-01 00:28:54.230713 2010-01-01 00:28:54
2 2008-01-02 14:12:11.000000 2008-01-02 14:12:11
3 2010-05-19 09:12:32.080728 2010-05-19 09:12:32

关于python - 值错误 : unconverted data remains on Pandas DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22491298/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com