使用pd.to_datetime()转换CSV日期列触发ValueError问题求助
解决pd.to_datetime()格式匹配ValueError问题
嘿,咱们来解决你遇到的pd.to_datetime()格式匹配报错问题。这个问题核心是日期格式字符串和实际日期的顺序不匹配,我给你几个可行的解决方案:
错误原因分析
你的日期字符串是04/12/19 11:00 AM,而你指定的格式%d/%m/%y %I:%M %p默认按照日/月/年的顺序解析日期,但从你的数据来看,日期实际是月/日/年(MM/DD/YY)的格式,这就导致了格式不匹配的报错。
方案1:修正格式字符串
直接调整格式字符串为%m/%d/%y %I:%M %p,对应月/日/年的顺序,这样就能完美匹配你的日期数据:
import pandas as pd import matplotlib.pyplot as plt df = pd.read_csv("file_1.csv") # 修正格式字符串为月/日/年的顺序 df['Date'] = pd.to_datetime(df['Date'], format='%m/%d/%y %I:%M %p') df = df.set_index(["Date"]) df.plot() plt.show()
方案2:让pandas自动推断格式(更省心)
如果你不确定日期格式或者数据中存在多种轻微变化的格式,可以去掉format参数,让pandas自动识别日期格式,这样无需手动指定格式字符串:
import pandas as pd import matplotlib.pyplot as plt df = pd.read_csv("file_1.csv") # 移除format参数,pandas会自动推断日期格式 df['Date'] = pd.to_datetime(df['Date']) df = df.set_index(["Date"]) df.plot() plt.show()
方案3:读取CSV时直接解析日期(效率更高)
在读取CSV文件时就使用parse_dates参数直接解析日期列,一步完成读取和日期转换,比后续单独转换更高效:
import pandas as pd import matplotlib.pyplot as plt # 读取文件时直接将Date列解析为datetime类型 df = pd.read_csv("file_1.csv", parse_dates=['Date']) df = df.set_index(["Date"]) df.plot() plt.show()
额外说明
如果你的日期确实是日/月/年的顺序(比如04/12/19代表2019年12月4日),可以尝试添加dayfirst=True参数来辅助解析:
df['Date'] = pd.to_datetime(df['Date'], format='%d/%m/%y %I:%M %p', dayfirst=True)
不过这种情况通常不会触发你遇到的报错,所以更大概率是日期顺序搞反了。
内容的提问来源于stack exchange,提问作者Zakaria Abu Ailah
相关产品推荐
相关产品推荐

