试图从熊猫数据框中获取小计
Posted
技术标签:
【中文标题】试图从熊猫数据框中获取小计【英文标题】:Trying to get subtotals from a pandas dataframe 【发布时间】:2022-01-06 16:11:22 【问题描述】:我正在数据框中的两列之间进行交叉制表。以下是列中的示例:
column_1 column_2
A -8
B 95
A -93
D 11
C -62
D -14
A -55
C 66
B 76
D -49
我正在寻找返回 A、B、C 和 D 小计的代码。例如,对于 A,小计将为 -156 (-8-93-55 = -156)。
我尝试使用pandas.crosstab()
函数来做到这一点:
pandas.crosstab(df[column_1], df[column_2], margins=True, margins_name=column_1).Total
这是一个输出示例:
-271 -263 -241 -223 -221 -212 -207 -201 ... sum_column
A 1 0 1 0 0 1 0 0 ... ##
B 0 0 0 1 0 0 0 0 ... ##
C 0 0 0 0 1 0 0 1 ... ##
D 0 1 0 0 0 0 1 0 ... ##
总和列由每行中布尔值的总和组成,而不是四个字母中每个字母的小计。我曾经看到可以使用布尔表进行计算,但我很确定通过更改 pandas.crosstab()
命令可以获得所需的输出。
我很乐意从你那里得到一些想法和想法。
谢谢。
【问题讨论】:
【参考方案1】:如果您只是想要column_1
(A、B、C、D)中各个类别的总数,也许groupby 和求和可能会有所帮助!您可以在包含类别的列上调用 groupby
,然后在结果上调用 sum,如下所示:
df.groupby('column1').sum()
【讨论】:
以上是关于试图从熊猫数据框中获取小计的主要内容,如果未能解决你的问题,请参考以下文章