我有一个看起来像
的文件(可以保存为txt,csv或其他)name num at res x y z
AB 1 TY A 1.0-2.3 3.4
BC 2 ER B 2.1 3.4 -4.5
CD 3 TY A 2.3 32 -5.6
..
我希望能够提取“at”列中的所有元素,然后打印出该列中唯一元素的列表。我以前在文件中读取的命令是df = pd.read_csv("file.csv")
。
但是,如果我尝试print df['at'].head()
,我会收到有关哈希表和KeyError: 'at'
的错误
我该如何解决这个问题?
答案 0 :(得分:0)
<强>更新强>
你在第2024行遇到问题(熊猫数从0开始!):
预计在2024行的12个油田,看到13个
因此您可能希望清理数据或忽略错误这样的行:
df = pd.read_csv(..., delim_whitespace=True, error_bad_lines=False, ...)
OLD回答:
最有可能的是,您错误地读取了CSV文件。
如何检查:
print df.columns.tolist()
并注意列名
中的前导/尾随空格如何解决这个问题:
df = pd.read_csv(..., sep='\s+', ...)
或
df = pd.read_csv(..., delim_whitespace=True, ...)
答案 1 :(得分:0)
我认为您需要添加参数sep
作为read_csv
sep="\s+"
任意空格sep='\t'
标签sep=r'\s{2,}'
两个或更多个空格样品:
import pandas as pd
import io
temp=u"""ame num at res x y z
AB 1 TY A 1.0 -2.3 3.4
BC 2 ER B 2.1 3.4 -4.5
CD 3 TY A 2.3 32 -5.6
"""
#after testing replace io.StringIO(temp) to filename
df = pd.read_csv(io.StringIO(temp), sep="\s+")
print df
ame num at res x y z
0 AB 1 TY A 1.0 -2.3 3.4
1 BC 2 ER B 2.1 3.4 -4.5
2 CD 3 TY A 2.3 32.0 -5.6