Python:如何轻松获得行和列的小计?

Python:如何轻松获得行和列的小计?,python,python-3.x,pandas,Python,Python 3.x,Pandas,我是Python新手,正在竭尽全力让Pandas/XlsWriter做我想做的事情 我从CSV中的一组数据开始,将其加载到数据框中并进行操作。最后,在做了一个透视之后,我得到了如下所示的数据。突出显示的粉红色代表我试图让Pandas/XLSwriter以编程方式制作的内容。因此,行和列的数量将是可变的 两个问题: 1) 请告知我如何才能找到每行和每列的小计 2) 如何应用数字格式将其设置为xxx,xxx,xxx.00 奖金问题: 您会推荐OpenPYXL而不是XLSWriter(反之亦然)吗?为

我是Python新手,正在竭尽全力让Pandas/XlsWriter做我想做的事情

我从CSV中的一组数据开始,将其加载到数据框中并进行操作。最后,在做了一个透视之后,我得到了如下所示的数据。突出显示的粉红色代表我试图让Pandas/XLSwriter以编程方式制作的内容。因此,行和列的数量将是可变的

两个问题:

1) 请告知我如何才能找到每行和每列的小计

2) 如何应用数字格式将其设置为xxx,xxx,xxx.00

奖金问题:

您会推荐OpenPYXL而不是XLSWriter(反之亦然)吗?为什么


这主要是一个重复的问题:

您正在根据文档查找
df.sum()

对于您的具体情况,它看起来像:

# New column with row totals
df['Daily Total'] = df.sum(axis=1, numeric_only=True)
# New row with column totals
df = df.append(df.sum(numeric_only=True), ignore_index=True)
格式只是:

df[col] = df[col].map('{:,.2f}'.format)
或者,要格式化所有不是日期/交易对手列的内容,如果不是索引,则可以执行以下操作:

df = df.apply(lambda col: col.map('{:,.2f}'.format) if col.name != 'Counterparty' else col)

他特别指出,“因此行和列的数量将是可变的。”您的回答没有涉及可变的列数或列名。谢谢您的回答。增加新的柱子效果很好。但添加包含列总计的新行是一个问题。它的核心是我的日期索引列。追加需要“ignore_index”,但这会导致我的表丢失日期列(替换为通用数字索引)。我考虑了一个解决方法,但在语法方面有问题。我试图获取当前基于日期的索引,并将其添加到数据帧的前面。然后,我将能够运行您的代码,当我输出(忽略索引)解决方案时,到期日将是第一列,该解决方案是
df=df.reset_index()
df = df.apply(lambda col: col.map('{:,.2f}'.format) if col.name != 'Counterparty' else col)