2017-02-08 7 views
2

パンダのDataFrameの列を削除しようとしています。 DataFrameがテキストファイルから作成されました。

パンダ:Dataframe.Drop - ValueError:labels ['id']軸に含まれていません

import pandas as pd 
df = pd.read_csv('sample.txt') 
df.drop(['a'], 1, inplace=True) 

しかし、これは次のエラーを生成します。
ここ

ValueError: labels ['a'] not contained in axis  

sample.txtファイルのコピーです:事前に

a,b,c,d,e 
1,2,3,4,5 
2,3,4,5,6 
3,4,5,6,7 
4,5,6,7,8 

感謝を。

+0

もう少し具体化できますか?たとえば、コードを追加することによって。 – magicleon

+1

ありがとう、 – saar

答えて

1

"sample.txt"ファイルには削除しようとしているデータが実際には含まれていないという問題があります。

あなた線

df.drop(['id'], 1, inplace=True) 

値が「ID」は最初の行にある列を、(サンプル・ファイルからのデータを含む)あなたのデータフレームを取る見つけるためattepmtingさ(軸1)を行いますインプレース置換(既存のオブジェクトを変更してその列がない新しいオブジェクトを作成するのではなく、これはNoneを返し、既存のオブジェクトを変更するだけです)。

サンプルデータに 'id'と等しいヘッダーが含まれていないという問題があります。あなたの現在のサンプルファイルで

、あなただけの1軸の値が「A」、「B」、「C」、「D」、または「E」でドロップすることができます。これらの値のいずれかを削除するか、正しいヘッダーを持つサンプルファイルを取得するようにコードを修正してください。

@saarからのコメント回答に応じて追加http://chrisalbon.com/python/pandas_dropping_column_and_rows.html

**下:

パンダのドキュメントは素晴らしいではありませんが、ここではパンダの列ドロップを行う方法の良い例です。ここに私のコード例は次のとおりです。 Sample.txtを:

a,b,c,d,e 
1,2,3,4,5 
2,3,4,5,6 
3,4,5,6,7 
4,5,6,7,8 

サンプルコード:

import pandas as pd 

df = pd.read_csv('sample.txt') 
print('Current DataFrame:') 
print(df) 
df.drop(['a'], 1, inplace=True) 
print('\nModified DataFrame:') 
print(df) 

出力:

>>python panda_test.py 
Current DataFrame: 
    a b c d e 
0 1 2 3 4 5 
1 2 3 4 5 6 
2 3 4 5 6 7 
3 4 5 6 7 8 

Modified DataFrame: 
    b c d e 
0 2 3 4 5 
1 3 4 5 6 
2 4 5 6 7 
3 5 6 7 8 
+0

コード行は:df.drop(['a']、1、inplace = True)です。最初の列を削除するコードを書き留めてください。 – saar

+0

あなたのサンプルファイルで何か問題があると思います。ファイルの形式が正しく、使用していると思われるファイルが作業ディレクトリであることを確認します。それがチェックアウトされている場合は、DataFrameを出力して、期待どおりの方法であることを確認します。 –

+0

ありがとうRob。問題はエンコードされたようです。ファイルを(utf-8)として保存しましたが、ANSIとして保存してください。 – saar

1
bad= pd.read_csv('bad_modified.csv') 
A=bad.sample(n=10) 
B=bad.drop(A.index,axis=0) 

これは、部分的にデータフレームをドロップする例です。 必要な場合。

関連する問題