2016-08-04 19 views
2

ID、名前、仕様、時間などの列を持つDataFrameがあります。私は私の列の値をチェックするとPandas DataFrame-列のインデックス値の検索

私のファイル・パスは、

mc.coulumns.values 
私は私のIDは変な文字で、このように見えたことがあった

使用して、それらを

mc = pd.read_csv("C:\\data.csv", sep = ",", header = 0, dtype = str) 

を開き

['/ufeffID', 'Name', 'Specification', 'Time'] 

この後、このようなIDの列を割り当てました

mc.columns.values[0] = "ID" 

私は

mc.columns.values 

を使用して、これをチェックすると、私はその後

Array(['ID', 'Name', 'Specification', 'Time']) 

、と私の結果を得た、私はそれが私に"True"

を与えた、と

"ID" in mc.columns.values 

をチェックします

は、その後、私は

keyError 'ID'. 

、私はこのように述べてエラーを得た、

mc["ID"] 

を試してみました私は、ID列の値を取得したいとID列の前で変な文字を取り除きますか?それを解決する方法はありますか?どんな助けもありがとう。前もって感謝します。

+0

私が示唆したように 'encoding = utf-16''を渡すことができますか?また、' mc.columns.tolist() 'を使って実際のカラム名を確認することができます。 – EdChum

+0

これは関連しています:http ://stackoverflow.com/a/38316355/2285236 – ayhan

答えて

2

UTF-16 BOMだ、encoding='utf-16'read_csvするにはを参照してください渡す:上記https://en.wikipedia.org/wiki/Byte_order_mark#Representations_of_byte_order_marks_by_encoding

mc = pd.read_csv("C:\\data.csv", sep=",", header=0, dtype=str, encoding='utf-16') 

FE FFを動作するはずです。また、あなたがrenameを使用する必要があります

具体的には、UTF-16ビッグエンディアンのためのBOMですnp配列の値を上書きするのではなく、

mc.rename(columns={mc.columns[0]: "ID"}, inplace=True) 

正しく動作する

+0

ありがとうございました。 –

関連する問題