时间数据与格式不匹配......即使它确实如此

时间:2017-06-02 14:35:13

标签: python pandas datetime

我是Python和编程的新手,非常感谢小问题的帮助!我有一个包含三列数据的CSV文件,我想绘制:第一列,有日期,我想绘制为我的x轴;第二列和第三列包含与这些日期对应的数据。

我想绘制这些数据。我编写了一个应该读取CSV文件的脚本,将日期列值从字符串数据转换为时间戳,然后根据时间戳绘制其他列中的值以制作时间序列。

当我尝试运行脚本时,它会返回错误消息:

" ValueError:时间数据'日期'不匹配格式'%d /%m /%y' "

但是,在打开我的CSV文件时,所有日期值都以例如以下格式存储: 2016年1月31日,这似乎与我在Python中指定的格式相匹配。

我在下面分享我的脚本以获得任何可能的帮助。提前谢谢!

g[g==0.0] = np.nan

2 个答案:

答案 0 :(得分:1)

您可以使用

将整个date列转换为datetime个对象
df[0] = pd.to_datetime(df[0])

这样你根本不需要调用strptimepandas应该能够弄清楚日期格式是什么

答案 1 :(得分:1)

您的列中的字符串值为'Date',导致错误。

考虑数据框df

import pandas as pd
from io import StringIO

txt = """Date,value
31/01/16,1
31/01/16,1
Date,1
31/01/16,1
31/01/16,1"""

df = pd.read_csv(StringIO(txt))
df

       Date  value
0  31/01/16      1
1  31/01/16      1
2      Date      1
3  31/01/16      1
4  31/01/16      1

如果我尝试将此转换为Timestamp

df.Data = pd.to_datetime(df.Date, format='%d/%m/%y')
ValueError: time data 'Date' does not match format '%d/%m/%y' (match)

您可以修复数据,也可以使用NaT参数将其转换为errors(非时间[印章])

df.Date = pd.to_datetime(df.Date, format='%d/%m/%y', errors='coerce')
df

        Date  value
0 2016-01-31      1
1 2016-01-31      1
2        NaT      1
3 2016-01-31      1
4 2016-01-31      1