2017-06-06 10 views
1

私は2つの.csvファイルを結合し、新しい.xlsxファイルを作成しています。openpyxl:ValueError:dtype:int64 to Excel

コードは次のようになります:

ODEMPTY = pandas.read_csv('OD_Empty_unduplicated.csv') 
ODNEW = pandas.read_csv('OD_Out.csv') 

ODNEW = ODNEW.append(ODEMPTY) 

wb = openpyxl.load_workbook('cm2011.xlsx') 
sheet = wb.get_sheet_by_name('Sheet1') 

for i in range(len(ODNEW)): 
    sheet['A'+ str(i+1)].value = ODNEW['comm'][i] # start writing on A1 not A0 
    sheet['B'+ str(i+1)].value = ODNEW['ONode'][i] 
    sheet['C'+ str(i+1)].value = ODNEW['DNode'][i] 
    sheet['D'+ str(i+1)].value = ODNEW['quantity'][i] 
    sheet['E'+ str(i+1)].value = ODNEW['startRR'][i] 

エラー:ValueErrorを:DTYPE:エクセル

答えて

1

あなたは現在のセルに複数のpd.Seriesを書くしようとしているにint64型を。ただ一つの値を取得するには、あなたが.ilocを使用する必要があると思います、例えば:http://openpyxl.readthedocs.io/en/default/pandas.html

for i,j in ODNEW.iterrows(): 
    sheet['A'+ str(i+1)].value = j['ONode'] 
    sheet['C'+ str(i+1)].value = j['DNode'] 
    sheet['D'+ str(i+1)].value = j['quantity'] 
    sheet['E'+ str(i+1)].value = j['startRR'] 

は、そうでない場合は、ここで提供されるユーティリティ機能を見て:

for i in range(len(ODNEW)): 
    sheet['A'+ str(i+1)].value = ODNEW['comm'].iloc[i] # start writing on A1 not A0 
    sheet['B'+ str(i+1)].value = ODNEW['ONode'].iloc[i] 
    sheet['C'+ str(i+1)].value = ODNEW['DNode'].iloc[i] 
    sheet['D'+ str(i+1)].value = ODNEW['quantity'].iloc[i] 
    sheet['E'+ str(i+1)].value = ODNEW['startRR'].iloc[i] 

しかし、あなたが直接テーブルを反復処理することができます

+0

それはうまくいった!しかし、私はまだこのコードが動作しなくなった理由を理解していません。以前は完全に機能していました。 – pnkjmndhl