无法访问数据框列
Can't access dataframe columns
我正在从 csv 文件导入数据框,但无法按名称访问其中的某些列。怎么回事?
更具体地说:
> import pandas
> jobNames = pandas.read_csv("job_names.csv")
> print(jobNames)
job_id job_name num_judgements
0 933985 Foo 180
1 933130 Moo 175
2 933123 Goo 150
3 933094 Flue 120
4 933088 Tru 120
当我尝试访问第二列时,出现错误:
> jobNames.job_name
AttributeError: 'DataFrame' object has no attribute 'job_name'
奇怪的是,我可以这样访问 job_id 列:
> print(jobNames.job_id)
0 933985
1 933130
2 933123
3 933094
4 933088
Name: job_id, dtype: int64
编辑(将已接受的答案放在上下文中):
事实证明,csv 文件的第一行(列名)如下所示:
job_id, job_name, num_judgements
注意每个逗号后的空格!这些空格保留在列名中:
> jobNames.columns[1]
' job_name'
不构成有效的 python 标识符,因此这些列不可用作数据框属性。我仍然可以访问它们 dict-style:
> jobNames[' job_name']
另一种(可能较差)方法是从列名中删除空格:
> jobNames.columns = map(lambda s:s.strip(), jobNames.columns)
> jobNames.job_name
0 Foo
1 Moo
2 Goo
3 Flue
4 Tru
Name: job_name, dtype: object
从列名中删除空格的另一个解决方案是 str.strip
:
jobNames.columns = jobNames.columns.str.strip()
print (jobNames.job_name)
0 Foo
1 Moo
2 Goo
3 Flue
4 Tru
使用 pandas.read_csv
时传入 skipinitialspace=True
标志以删除 CSV 定界符后的空格。
我正在从 csv 文件导入数据框,但无法按名称访问其中的某些列。怎么回事?
更具体地说:
> import pandas
> jobNames = pandas.read_csv("job_names.csv")
> print(jobNames)
job_id job_name num_judgements
0 933985 Foo 180
1 933130 Moo 175
2 933123 Goo 150
3 933094 Flue 120
4 933088 Tru 120
当我尝试访问第二列时,出现错误:
> jobNames.job_name
AttributeError: 'DataFrame' object has no attribute 'job_name'
奇怪的是,我可以这样访问 job_id 列:
> print(jobNames.job_id)
0 933985
1 933130
2 933123
3 933094
4 933088
Name: job_id, dtype: int64
编辑(将已接受的答案放在上下文中):
事实证明,csv 文件的第一行(列名)如下所示:
job_id, job_name, num_judgements
注意每个逗号后的空格!这些空格保留在列名中:
> jobNames.columns[1]
' job_name'
不构成有效的 python 标识符,因此这些列不可用作数据框属性。我仍然可以访问它们 dict-style:
> jobNames[' job_name']
另一种(可能较差)方法是从列名中删除空格:
> jobNames.columns = map(lambda s:s.strip(), jobNames.columns)
> jobNames.job_name
0 Foo
1 Moo
2 Goo
3 Flue
4 Tru
Name: job_name, dtype: object
从列名中删除空格的另一个解决方案是 str.strip
:
jobNames.columns = jobNames.columns.str.strip()
print (jobNames.job_name)
0 Foo
1 Moo
2 Goo
3 Flue
4 Tru
使用 pandas.read_csv
时传入 skipinitialspace=True
标志以删除 CSV 定界符后的空格。