openpyxl:ValueError:dtype:int64到Excel

我将两个.csv文件合并在一起,然后编写一个新的.xlsx文件。

代码如下所示:

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:int64到Excel

您目前正在尝试将多个pd.Series写入单元格。 要获得一个值,你必须使用.iloc ,例如:

 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] 

但是你可以直接遍历表:

 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'] 

否则看看这里提供的效用函数: http : //openpyxl.readthedocs.io/en/default/pandas.html