【发布时间】:2019-09-05 22:53:57
【问题描述】:
我正在学习可汗学院的统计学课程,作为我大学时代的复习,并作为一种让我快速了解熊猫和其他科学 Python 的方法。
我有一张来自可汗学院的桌子,看起来像这样:
| 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 中是否存在,还是我必须拼凑自己的方法?
【问题讨论】: