在read_csv之后选择panda Dataframe 中的列时出现键错误

rwqw0loc  于 2023-01-06  发布在  其他
关注(0)|答案(6)|浏览(156)

我尝试将CSV文件读入panda Dataframe 并选择一列,但总是得到一个键错误。
文件成功读入,我可以在iPython笔记本中查看 Dataframe ,但是当我想选择第一列以外的列时,它会抛出一个键错误。
我正在使用此代码:

import pandas as pd

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

这是我正在处理的文件https://www.dropbox.com/s/81iwm4f2hsohsq3/transactions.csv?dl=0
谢谢大家!

bmvo0sr5

bmvo0sr51#

使用sep='\s*,\s*',这样您就可以处理column-names中的空格:

transactions = pd.read_csv('transactions.csv', sep=r'\s*,\s*',
                           header=0, encoding='ascii', engine='python')

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

print(transactions.columns.tolist())

输出:

['product_id', 'customer_id', 'store_id', 'promotion_id', 'month_of_year', 'quarter', 'the_year', 'store_sales', 'store_cost', 'unit_sales', 'fact_count']
qzlgjiam

qzlgjiam2#

如果你需要从 Dataframe 中选择多个列,使用2对方括号,例如

df[["product_id","customer_id","store_id"]]
w80xi6nr

w80xi6nr3#

我遇到了同样的问题,即在从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)

参考:https://stackoverflow.com/a/32704818/16268870

b1payxdu

b1payxdu4#

如果键与任何 Dataframe 列名"完全"不匹配,通常会出现键错误:
您也可以尝试:

import csv
import pandas as pd
import re
    with open (filename, "r") as file:
        df = pd.read_csv(file, delimiter = ",")
        df.columns = ((df.columns.str).replace("^ ","")).str.replace(" $","")
        print(df.columns)
flvlnr44

flvlnr445#

在www.example.com _csv()中给予csv文件的完整路径pd.read,这对我有效

rm5edbpk

rm5edbpk6#

当数据集按,“”拆分时,创建的特征在开头有空格。使用正则表达式删除空格可能会有帮助。
目前我是这样做的:
标签名称= '标签'

相关问题