【发布时间】:2016-06-16 07:21:25
【问题描述】:
我有一个如下所示的数据集:
Id Economics English History Literature
0 56 1 1 2 1
1 11 1 0 0 1
2 6 0 1 1 0
3 43 2 0 1 1
4 14 0 1 1 0
我通过从文件中读取一些 csv 创建了这个数据集,例如,我可以很容易地使用 df['Economics'] 访问这些列。然后我将它保存到文件中:
df.to_csv(file_path, sep='\t')
但是当我出于其他目的在其他功能中重新打开数据集并尝试以相同方式访问列时,即
df=pd.read_csv(file_path, sep='\t')
print df['Economics']
我有
KeyError:经济学
我在阅读时尝试了多种编码,并验证了它是否不是多索引数据帧,但编码和索引一切正常。我发现还有另一种方法:df.get('Economocs'),在这种情况下可以正常工作。但是,如果我想遍历列名,寻找“经济”,我又遇到了一个 KeyError。
所以我的问题是:为什么会这样?为什么有时我可以使用 df['column_name'] 直接访问列,而有时我需要使用 df.get('column_name')。以及如果第一种方法不起作用,如何处理column.names?
【问题讨论】:
-
你能提供一个独立的例子来说明这个问题吗?
-
@BrenBarn,你所说的独立示例是什么意思?我更新了问题,如果它有助于理解问题
-
我的意思是提供一段代码和示例数据,以便其他人可以实际运行该代码并重现您的错误。任何人都很难从对问题的描述中帮助您;您需要一个其他人可以用来复制问题的实际示例。
-
@Amanda,请执行以下脚本并使用其输出更新您的问题:"... print("before: %s" % df.columns); df.to_csv(...) ; df=pd.read_csv(...); print("之后: %s" % df.columns); "
-
你能把
df.columns.tolist()的输出贴出来
标签: python pandas dataframe keyerror