【发布时间】:2021-07-21 13:47:24
【问题描述】:
我有一个用类似于这个的熊猫创建的 multiIndex 数据框:
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)
我想要实现的是在数据框的末尾添加一个新行,其中包含新索引表示的三个类别(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”)
【问题讨论】:
标签: python excel rows multi-index pandas.excelwriter