Har*_*y M 16 python csv pandas
我正在尝试将CSV文件读入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)
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)
小智 9
如果您需要从数据框中选择多列,请使用 2 对方括号,例如。
df[["product_id","customer_id","store_id"]]
Run Code Online (Sandbox Code Playgroud)