データフレーム内の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]”'
私が試したこと:
header
にindex 0
を付けてみましたが、私はこのコードで列の名前を変更しようとしました:
df.rename(columns=df.iloc[0],inplace=True)
私もこれを試しました:
df.columns = df.iloc[1]
df=df.reindex(df.index.drop(0))
こちらのコメントも試してみました link
上記のどれも問題を解決しませんでした。
投稿した印刷物では、区切り文字として空白が含まれているようです。 pd.read_csv
はデフォルトのセパレータとして,
を使用して読み取るため、明示的に指定する必要があります。
pd.read_csv('source.txt',header=0, delim_whitespace=True)
コードを記述して新しい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')
これを試してみることができます:
pd.read_csv('source.txt',header=0, delim_whitespace=True)
データに空白が含まれているとエラーが発生するため、delim_whitespace
は、データ内にある場合にそれらを削除するために含まれています。