在read_csv之后选择pandas数据帧中的列时出现键错误

Har*_*y M 16 python csv pandas

我正在尝试将CS​​V文件读入pandas数据帧并选择一列,但不断收到密钥错误.

该文件成功读入,我可以在iPython笔记本中查看数据帧,但是当我想选择除第一个列以外的列时,它会抛出一个键错误.

我正在使用此代码:

import pandas as pd

transactions = pd.read_csv('transactions.csv',low_memory=False, delimiter=',', header=0, encoding='ascii')
transactions['quarter']
Run Code Online (Sandbox Code Playgroud)

这是我正在处理的文件:https: //www.dropbox.com/s/imd7hq2iq23hf8o/transactions.csv?dl = 0

谢谢!

Max*_*axU 49

使用,sep='\s*,\s*'以便您将使用列名称处理空格:

transactions = pd.read_csv('transactions.csv', sep='\s*,\s*',
                           header=0, encoding='ascii', engine='python')
Run Code Online (Sandbox Code Playgroud)

或者,您可以确保CSV文件中没有未加引号的空格并使用您的命令(未更改)

证明:

print(transactions.columns.tolist())
Run Code Online (Sandbox Code Playgroud)

输出:

['product_id', 'customer_id', 'store_id', 'promotion_id', 'month_of_year', 'quarter', 'the_year', 'store_sales', 'store_cost', 'unit_sales', 'fact_count']
Run Code Online (Sandbox Code Playgroud)

  • 列表显示我名字中有一个额外的空格.非常感谢,我现在一直在墙上砸了几个小时 (3认同)

Han*_*Yan 13

我遇到了同样的问题,从 CSV 读取后过滤列时出现关键错误。

原因

这些问题的主要原因是CSV 文件中存在额外的初始空格。(在您上传的 CSV 文件中找到,例如, customer_id, store_id, promotion_id, month_of_year,

证明

为了证明这一点,你可以尝试print(list(df.columns))并且列的名称必须是['product_id', ' customer_id', ' store_id', ' promotion_id', ' month_of_year', ...].

解决方案

解决这个问题的直接方法是在 中添加参数pd.read_csv(),例如:

pd.read_csv('transactions.csv', 
            sep = ',', 
            skipinitialspace = True)
Run Code Online (Sandbox Code Playgroud)

参考:/sf/answers/2289337291/


小智 9

如果您需要从数据框中选择多列,请使用 2 对方括号,例如。

df[["product_id","customer_id","store_id"]]
Run Code Online (Sandbox Code Playgroud)