gpt4 book ai didi

python - 如何在 pandas 中创建求和行和求和列?

转载 作者:IT老高 更新时间:2023-10-28 21:08:50 25 4
gpt4 key购买 nike

我正在学习可汗学院的统计类(class),作为对大学时代的复习,以及让我快速了解 Pandas 和其他科学 Python 的一种方式。

我有一张来自可汗学院的 table ,看起来像这样:

             | Undergraduate | Graduate | Total
-------------+---------------+----------+------
Straight A's | 240 | 60 | 300
-------------+---------------+----------+------
Not | 3,760 | 440 | 4,200
-------------+---------------+----------+------
Total | 4,000 | 500 | 4,500

我想使用 pandas 重新创建此表。当然,我可以使用类似的东西创建一个 DataFrame

"Graduate": {...},
"Undergraduate": {...},
"Total": {...},

但这似乎是一种幼稚的方法,既会很快失败,又无法真正扩展。

我有这样的表格的非总计部分:

df = pd.DataFrame(
{
"Undergraduate": {"Straight A's": 240, "Not": 3_760},
"Graduate": {"Straight A's": 60, "Not": 440},
}
)
df

我一直在寻找并发现了一些有希望的东西,例如:

df['Total'] = df.sum(axis=1)

但我没有发现任何非常优雅的东西。

我确实发现 crosstab 函数看起来应该做我想做的事,但似乎为了做到这一点,我必须为所有人创建一个由 1/0 组成的数据框这些值,这似乎很愚蠢,因为我已经得到了一个聚合。

我发现了一些似乎手动构建新总计行的方法,但似乎应该有更好的方法,例如:

totals(df, rows=True, columns=True)

什么的。

这在 pandas 中是否存在,还是我必须拼凑自己的方法?

最佳答案

或者分两步,按照您的建议使用 .sum() 函数(这可能也更具可读性):

import pandas as pd

df = pd.DataFrame( {"Undergraduate": {"Straight A's": 240, "Not": 3_760},"Graduate": {"Straight A's": 60, "Not": 440},})

#Total sum per column:
df.loc['Total',:]= df.sum(axis=0)

#Total sum per row:
df.loc[:,'Total'] = df.sum(axis=1)

输出:

              Graduate  Undergraduate  Total
Not 440 3760 4200
Straight A's 60 240 300
Total 500 4000 4500

关于python - 如何在 pandas 中创建求和行和求和列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53414960/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com