2016-07-21 6 views
2

私はpandasでデータフレームを作成した後、ヘッダを大文字にする関数を持っています。しかし、大文字化した後にデータフレーム情報にアクセスしようとすると、セグメント化エラーが発生します。私が関数を適用する前にアクセスしようとすると、何の問題もありません。私は何が間違っていますか?Python Pandas - 列の名前を変更した後のセグメンテーションフォルト?

reader = pd.read_csv(inFile) 

def capitalize_headers(df): 
    for i in range(len(list(df.columns.values))): 
     df.columns.values[i] = (df.columns.values[i]).upper() 

capitalize_headers(reader) 

print reader['ColumnName'] 

答えて

2

すべての列名を大文字にすると、小文字の列にアクセスするとエラーが発生します。

具体的には、ライン

df.columns.values[i] = (df.columns.values[i]).upper() 

'COLUMNNAME''columnname'変換します。 Pandasの列アクセスは大文字と小文字が区別されるため、df['COLUMNNAME']でその列にアクセスします。

また、Pandas str methodsを使用してこれを行うより効率的な/ピジョンの方法があります。

df.columns = df.columns.str.capitalize() 
+0

助けてくれてありがとう!私はあまりにもそれを言いました、私は残念です。私は['COLUMNNAME']をチェックしようとしたが、それは私に同じエラーを与える。実際に私がこれを投稿して作業して以来、私のエラーはKeyErrorに切り替えました: 'COLUMNNAME' – MrDinkleburg

+0

データフレームを印刷しようとしてもまだセグメンテーションフォールトが発生します – MrDinkleburg

+0

実際には、私はdf.columns.to_series()。capitalize()に変更する必要がありました。すべての助けをありがとう! – MrDinkleburg

関連する問題