pandasデータフレームの名前のない列を削除する [重複] 質問する

pandasデータフレームの名前のない列を削除する [重複] 質問する

以下のような列 A ~ G のデータ ファイルがありますが、これを読み取ると、理由もなく最後にpd.read_csv('data.csv')余分な列が印刷されます。unnamed

colA    ColB    colC    colD    colE    colF    colG    Unnamed: 7
44      45      26      26      40      26      46        NaN
47      16      38      47      48      22      37        NaN
19      28      36      18      40      18      46        NaN
50      14      12      33      12      44      23        NaN
39      47      16      42      33      48      38        NaN

データファイルを何度も見ましたが、他の列には余分なデータがありません。読み取り中にこの余分な列を削除するにはどうすればよいでしょうか? よろしくお願いします

ベストアンサー1

df = df.loc[:, ~df.columns.str.contains('^Unnamed')]

In [162]: df
Out[162]:
   colA  ColB  colC  colD  colE  colF  colG
0    44    45    26    26    40    26    46
1    47    16    38    47    48    22    37
2    19    28    36    18    40    18    46
3    50    14    12    33    12    44    23
4    39    47    16    42    33    48    38

注記:多くの場合、名前のない列は 1 つだけでありUnnamed: 0、これは CSV ファイルの最初の列です。これは、次の手順の結果です。

  1. DataFrameはパラメータを使用してCSVファイルに保存されますindex=True。これはデフォルト行動
  2. pd.read_csv()このCSVファイルを明示的に指定せずにDataFrameに読み込みますindex_col=0(デフォルトindex_col=None:)

この列を削除する最も簡単な方法は、パラメータを指定することですpd.read_csv(..., index_col=0)

df = pd.read_csv('data.csv', index_col=0)

おすすめ記事