具有多索引的pd.DataFrame的摘要行

2024-10-03 15:22:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用熊猫创建了一个多索引数据框,与此类似:

Dataframe

nest = {'A1': dfx[['aa','bb','cc']],
        'B1':dfx[['dd']],
        'C1':dfx[['ee', 'ff']]}

reform = {(outerKey, innerKey): values for outerKey, innerDict in nest.items() for innerKey, values in innerDict.items()}

dfzx = pd.DataFrame(reform)

MultiIndex DF

我试图实现的是在数据帧的末尾添加一个新行,该行包含由新索引(A1、B1、C1)表示的三个类别的汇总

我已经尝试使用df.loc(在这种情况下我通常会使用),但我得到了错误。iloc也是如此

a1sum = dfzx['A1'].sum().to_list()
a1sum = sum(a1sum)

b1sum = dfzx['B1'].sum().to_list()
b1sum = sum(b1sum)

c1sum = dfzx['C1'].sum().to_list()
c1sum = sum(c1sum)

totalcat = a1sum, b1sum, c1sum

newrow = ['Total', totalcat]
newrow

dfzx.loc[len(dfzx)] = newrow

ValueError: cannot set a row with mismatched columns

#Alternatively
newrow2 = ['Total', a1sum, b1sum, c1sum]
newrow2

dfzx.loc[len(dfzx)] = newrow2

ValueError: cannot set a row with mismatched columns

我怎样才能纠正这个错误?或者还有其他功能可以让我继续吗

注意:DF将在Excel文件中移动(我使用ExcelWriter)

我最终想要实现的结果类型是(灰色行“SUM”

dfzx in Excel


Tags: to数据a1loclistb1sumc1
1条回答
网友
1楼 · 发布于 2024-10-03 15:22:15

我自己想出了一种解决办法

  1. 我在Pandas中创建了一个单独的数据框,其中包含摘要

  2. 我使用ExcelWriter将两个数据框放在同一张excel工作表上

从技术上讲,可以在Excel中设置数据的样式和格式(xlsxwriter或framestyle似乎是常用的模块)。或者,应该手动执行此操作

Solution

相关问题 更多 >