web-dev-qa-db-ja.com

KeyError:「[[''、 '']]のいずれも[列]にありません」pandas python

データフレーム内の2つの列をスライスしたいと思います。

これはこれを行うための私のコードです:

import pandas as pd
df = pd.read_csv('source.txt',header=0)
cidf=df.loc[:,['vocab','sumCI']]
print(cidf)

これはデータのサンプルです:

ID  vocab   sumCI   sumnextCI   new_diff
450      statu    3.0        0.0       3.0
391     provid    4.0        1.0       3.0
382  prescript    3.0        0.0       3.0
300   lymphoma    2.0        0.0       2.0
405      renew    2.0        0.0       2.0

**最初にこのエラーが発生しました:**

KeyError: “None of [['', '']] are in the [columns]”'

私が試したこと:

  • ファイルの読み取り中にheaderindex 0を付けてみましたが、
  • 私はこのコードで列の名前を変更しようとしました:

    df.rename(columns=df.iloc[0],inplace=True)
    
  • 私もこれを試しました:

    df.columns = df.iloc[1]
    df=df.reindex(df.index.drop(0))
    
  • こちらのコメントも試してみました link

上記のどれも問題を解決しませんでした。

8
sariii

投稿した印刷物では、区切り文字として空白が含まれているようです。 pd.read_csvはデフォルトのセパレータとして,を使用して読み取るため、明示的に指定する必要があります。

pd.read_csv('source.txt',header=0, delim_whitespace=True)
5
rafaelc

コードを記述して新しいCSVファイルを作成し、新しいファイルを使用するだけです

 import numpy as np
 import pandas as pd
 import matplotlib.pyplot as plt
 pd.read_csv('source.txt',header=0, delim_whitespace=True)
 headers = ['ID','vocab','sumCI','sumnextCI','new_diff']
 df.columns = headers 
 df.to_csv('newsource.txt')
2

これを試してみることができます:

pd.read_csv('source.txt',header=0, delim_whitespace=True)

データに空白が含まれているとエラーが発生するため、delim_whitespaceは、データ内にある場合にそれらを削除するために含まれています。

0