我是Python和编程的新手,非常感谢小问题的帮助!我有一个包含三列数据的CSV文件,我想绘制:第一列,有日期,我想绘制为我的x轴;第二列和第三列包含与这些日期对应的数据。
我想绘制这些数据。我编写了一个应该读取CSV文件的脚本,将日期列值从字符串数据转换为时间戳,然后根据时间戳绘制其他列中的值以制作时间序列。
当我尝试运行脚本时,它会返回错误消息:
" ValueError:时间数据'日期'不匹配格式'%d /%m /%y' "
但是,在打开我的CSV文件时,所有日期值都以例如以下格式存储: 2016年1月31日,这似乎与我在Python中指定的格式相匹配。
我在下面分享我的脚本以获得任何可能的帮助。提前谢谢!
g[g==0.0] = np.nan
答案 0 :(得分:1)
您可以使用
将整个date
列转换为datetime
个对象
df[0] = pd.to_datetime(df[0])
这样你根本不需要调用strptime
,pandas
应该能够弄清楚日期格式是什么
答案 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