2016-08-11 8 views
3

データフレームをcsvファイルからインポートしていますが、一部の列に名前でアクセスできません。どうしたの?より具体的にはデータフレーム列にアクセスできない

:私は、このようにJOB_ID列にアクセスすることができ、不思議

> jobNames.job_name 

AttributeError: 'DataFrame' object has no attribute 'job_name'

:私は2番目の列にアクセスしようとすると

> 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 

、私はエラーを取得します:

> 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 

は、それぞれの後にスペースに注意してください。コンマ!これらのスペースは、列名に保持されています

有効なPython識別子を形成しない
> jobNames.columns[1] 

' job_name' 

ので、それらの列は、データフレームの属性として使用できません。私はまだのdict-スタイルそれらにアクセスすることができます

> jobNames[' job_name'] 

答えて

2

CSV区切り文字の後に空白を除去するskipinitialspace=Trueフラグにpandas.read_csvパスを使用。

0

別の(おそらく劣っ)のアプローチは、列名からスペースを削除することです:列名から空白を除去する

> 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  
+0

True、CSV 101 gotcha。 –

1

別の解決策は、str.strip次のとおりです。

jobNames.columns = jobNames.columns.str.strip() 
print (jobNames.job_name) 

0  Foo 
1  Moo 
2  Goo 
3 Flue 
4  Tru 
関連する問題