尝试从 pandas 数据框中获取小计

Trying to get subtotals from a pandas dataframe

我正在数据框中的两列之间进行交叉制表。这是列中的示例:

 column_1    column_2

    A          -8
    B          95
    A         -93
    D          11
    C         -62
    D         -14
    A         -55
    C          66
    B          76
    D         -49

我正在寻找 returns 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  ...      ##

总和列包含每行中布尔值的总和,而不是四个字母中每个字母的小计。我曾经看到一个布尔值 table 可以用于计算,但我很确定通过更改 pandas.crosstab() 命令可以实现所需的输出。

我很乐意从你那里得到一些想法和想法。

谢谢。

如果您只是想要 column_1(A、B、C、D)中各个类别的总数,也许 groupby 和求和会有所帮助!您可以在包含类别的列上调用 groupby,然后对结果调用 sum,如下所示:

df.groupby('column1').sum()