首页 > 解决方案 > 将数据导出到 Excel 时出现 Pandas 错误

问题描述

获取熊猫错误为:ValueError:操作数无法与形状(4,)(2,2)一起广播

尝试在 excel 中导出详细信息,我尝试使用以下代码:

预期输出:选定的客户名称:name1、name2 用于设计:CUST 选定的客户名称:值 name3、name4 用于设计:ORDER

已尝试以下代码:

import pandas as pd
import xlsxwriter

workbook   = xlsxwriter.Workbook('file.xlsx')
worksheet1 = workbook.add_worksheet()

def CUST1(): 
    df = pd.DataFrame([
    ['CUST', 'name1', 'PIZZA', 'A'],
    ['CUST', 'name2', 'DONUT', 'A'],
    ['ORDER', 'name3', 'CAKE','B'],
    ['ORDER', 'name4', 'COOKIES', 'C']
    ],
    columns=("DESIG", "NAMES", "CITIES", "CLASS"))
    ORD = pd.concat((df['DESIG'],df.groupby('DESIG') 
    ['NAMES'].transform(lambda x: ", ".join(x))), 
    axis=1).drop_duplicates()
    print(ORD)
    for x, name in enumerate(ORD):
     worksheet1.write(x, 0, "selected customer names" 
     + df['DESIG'] + "for" +df.groupby('DESIG') 
     ['NAMES'])
CUST1()
workbook.close()

标签: pythonpython-3.xpandaspython-2.7

解决方案


根据提供的预期输出,这应该是您想要的。我刚刚使用了 dataFrame ORD,因为它包含所有必要的信息,而无需进行更多的数据转换。

import pandas as pd
import xlsxwriter

workbook   = xlsxwriter.Workbook('file.xlsx')
worksheet1 = workbook.add_worksheet()

def CUST1(): 
    df = pd.DataFrame([
    ['CUST', 'name1', 'PIZZA', 'A'],
    ['CUST', 'name2', 'DONUT', 'A'],
    ['ORDER', 'name3', 'CAKE','B'],
    ['ORDER', 'name4', 'COOKIES', 'C']
    ],
    columns=("DESIG", "NAMES", "CITIES", "CLASS"))
    ORD = pd.concat((df['DESIG'],df.groupby('DESIG') 
    ['NAMES'].transform(lambda x: ", ".join(x))), 
    axis=1).drop_duplicates()

    for x in range(len(ORD)):
        worksheet1.write_string(x, 0, "selected customer names: " 
         + ORD['NAMES'].iloc[x] + " for the desig: " +  ORD['DESIG'].iloc[x])
CUST1()
workbook.close()

推荐阅读