尝试将date字段转为datetime时触发KeyError: 'date',如何解决?
问题解决:KeyError: 'date'
错误原因
你犯了两个关键错误:
- 读取CSV得到的DataFrame对象
df_sales,被你用字典{1: "date", 2: "store", 3: "item", 4:"sales"}覆盖了,此时df_sales不再是DataFrame,而是键为1、2、3、4的字典,不存在'date'这个键,所以触发KeyError。 pd.read_csv的编码参数传递错误,应该写成encoding='utf-8',不能直接传'utf-8'作为第二个位置参数。
修正后的代码
分两种场景处理:
场景1:CSV文件本身包含表头(第一行就是date、store、item、sales)
import pandas as pd # 读取csv数据,正确指定编码参数,路径前加r避免转义问题 df_sales = pd.read_csv(r"C:\Users\Yuvraj\Downloads\sales_data.csv", encoding='utf-8') # 将date字段从字符串转换为datetime类型 df_sales['date'] = pd.to_datetime(df_sales['date']) # 显示前10行数据 print(df_sales.head(10))
场景2:CSV文件没有表头,需要手动指定列名
import pandas as pd # 读取csv数据,指定列名、编码,路径前加r避免转义问题 df_sales = pd.read_csv(r"C:\Users\Yuvraj\Downloads\sales_data.csv", names=["date", "store", "item", "sales"], encoding='utf-8') # 将date字段从字符串转换为datetime类型 df_sales['date'] = pd.to_datetime(df_sales['date']) # 显示前10行数据 print(df_sales.head(10))
内容的提问来源于stack exchange,提问作者Yuvraj Boggaram
相关产品推荐
相关产品推荐

