2015-12-27 11 views
5

私はhereと同じ問題を抱えていますが、提案された方法のどれも私には役に立たない。パンダ:エンコードの問題を解決するために保存

大文字でない文字が多い中くらいのサイズのutf-8 .csvファイルがあります。 私は、列の特定の値でファイルを分割しています。次に、得られた各データフレームを保存された.xlsxファイルとして保存したいと思います。

これは、私はエラーを取得していますように、動作しません:

  1. 明示的xlsxwriterエンジンを使用する:ここで

    UnicodeDecodeError: 'ascii' codec can't decode byte 0xff in position 7: ordinal not in range(128) 
    

    は、私が試したものです。これは何も変わらないようです。

  2. エンコーディングを変更して不正な文字を破棄するための関数(下記)を定義します。これは何も変わらない。

    def changeencode(data): 
    cols = data.columns 
    for col in cols: 
    if data[col].dtype == 'O': 
        data[col] = data[col].str.decode('utf-8').str.encode('ascii', 'ignore') 
    return data 
    
  3. すべての攻撃的な文字を他のものに手作業で変更します。それでも効果はありません(この変更後に引用されたエラーが得られました)。

  4. ファイルをutf-16(これは私が信じているのは、後でExcelからファイルを操作できるようにしたいので正しいエンコーディングであると考えています)をエンコードしても役に立ちません。

私はこの問題がファイル自体にあると信じています(2と3のため)。しかし、私はそれを回避する方法が全くわかりません。私はどんな助けにも感謝しています。ファイルの先頭が下に貼り付けられます。

"Submitted","your-name","youremail","phone","miasto","cityCF","innemiasto","languagesCF","morelanguages","wiek","partnerCF","messageCF","acceptance-795","Submitted Login","Submitted From","2015-12-25 14:07:58 +00:00","Zózia kryś","[email protected]","4444444","Wrocław","","testujemy polskie znaki","Polski","testujemy polskie znaki","44","test","test","1","Justyna","99.111.155.132", 

EDIT

(分割部のないバージョンのいずれか、)いくつかのコード:

import pandas as pd 
import string 
import xlsxwriter 

df = pd.read_csv('path-to-file.csv') 

with pd.ExcelWriter ('test.xlsx') as writer: 
       df.to_excel(writer, sheet_name = 'sheet1',engine='xlsxwriter') 
+0

すでに 'df.to_excel(path、encoding = 'utf8')'を試したことがありますか? – Stefan

+0

@Stefan私は、尋ねてくれてありがとう。確かに、私はこれをもう一度試しました - 今すぐ。まだ何も。 – jjj

答えて

3

をコードする形式をXLSXにファイルを保存おそらくこれは私が当時使っていたpandasのバグでした。 今のところ、pandasのver。 0.19.2、下のコードは問題からのcsvを問題なく(正しいエンコーディングで)保存します。
NB:openpyxlモジュールをシステムにインストールする必要があります。

import pandas as pd 
df = pd.read_csv('Desktop/test.csv') 
df.to_excel('Desktop/test.xlsx', encoding='utf8') 
+0

パンダで私にとってはうまくいきません。0.20.3 –

+0

@greghor hmm、weird。私はちょうど今同じバージョンをインストールし、それは私のために働く。あなたは 'openpyxl'をインストールしましたか? – jjj

+0

あなたの返信ありがとう、私はopenpyxl 2-5-0がインストールされています。しばらくの間struglingした後、データ 'df = pd.read_csv(" test.csv "、encoding =" utf-8 ")をロードするときにエンコーディングを指定すると、正常に動作することに気付きました。 –

0

何がパンダからCSVファイルを保存してから変換するために、win32comを使用する場合Excelに。それは...このようになり

import win32com.client 
excel = win32com.client.Dispatch("Excel.Application") 
excel.Visible = 0 

for x in range(10): 
    f = path + str(x) 
    # not showing the pandas dataframe creation 
    df.to_csv(f+'.csv') 
    wb = excel.Workbooks.Open(f+'.csv') 
    wb.SaveAs(f+'.xlsx', 51) #xlOpenXMLWorkbook=51 
2

df['col'] = df['col'].apply(lambda x: unicode(x)) 

として非ASCII文字の列をコードしてみた後、「utf8の」

+0

あなたの提案をありがとう、残念ながら、これは動作しません。同じエラーが返されますが、今は '.apply'行によってトリガーされます。 – jjj

+0

ここにcsvファイルのスニペットを添付できますか? –

+0

遅く返事を申し訳ありません。エラーを引き起こすのに十分なはずのファイルの一部が私の質問に掲載されています。何かもっと欲しいですか? – jjj

関連する問題