2016-09-29 5 views
0

私はPandasを使用して、リソースからCSVを引き出し、さらに処理するために新しいCSVに書き出します。パンダは非ASCII文字を最初のヘッダー列に書き込んでいるようですが、ソースCSVには存在しません。 PandasがCSVを書くときに、Pandasに特殊文字を無視させるにはどうしたらいいですか?ソースにない非ASCII文字の書き込みを停止する

"コンピュータ名"には特殊文字(\ xef \ xbb \ xbf)が含まれている必要があります。または、その列のCSVには何も書き込まれません。私はパンダがファイル全体にCSVをダウンロードしたときに文字が問題であることが分かったが、端末にプリントアウトが印刷されると特殊文字は表示されない。要求されたよう

pandasdata = pandas.read_csv(r'\\mydrive\resource.csv') 
header = ["IP Address", "\xef\xbb\xbfComputer Name", "OS"] 
pandasdata.to_csv('localresources.csv', columns = header) 

、ここで照会の結果が何であるかの列CSVであった。

print(pandasdata.columns.tolist()) 

[ '\のXeF \ XBB \ xbfComputer名'、 'OS'、 '場所'、「 'SerialID'、 'DeskID' 'IP Address']

+1

'pandasdata.columns.tolist()'は何を表示しますか?あなたのファイルにユニコードのBOMがないのは確かですか? 'pandasdata = pandas.read_csv(r' \\ mydrive \ resource.csv '、encoding =' utf-8 ') 'または' pandasdata = utf-16 ') ' – EdChum

+0

@EdChum asciiコーデックでのUTF-8エラーは、位置9の文字u' \ xae 'を符号化することができません:範囲内の序数(128)。 CParserErrorでのUTF-16エラー:データのトークン化中にエラーが発生しました。 Cエラー:ソース上のread(nbytes)呼び出しに失敗しました。 try engine = 'python'。 あなたの最初の提案については、どこに配置するのですか? – LampShade

+1

あなたの質問を 'print(pandasdata.columns.tolist()) 'の出力で編集すると、カラムに何らかのダフ値があるかどうかが表示されます。もし望むのであれば' df .columns =奇妙な記号を取り除くための["IPアドレス"、 "コンピュータ名"、 "OS"] ' – EdChum

答えて

0

Pandasに特殊文字を無視するように指示するのではなく、列そのものの名前を変更すると私にとってうまくいったようです。以下は、CSVを読んだ後で私が使ったコードです。名前が変更された後、ヘッダーリストに新しい名前が追加されました。彼らがソースCSVの一部ではなかったときにパンダが特殊文字を書いていた理由は不明です。

df.rename(columns = {'\xef\xbb\xbfComputer Name':'Computer Name'}, inplace = True 
関連する問題