我正在数据帧中的两列之间进行交叉制表。以下是列中的一个示例:
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 ... ##
sum列由每行布尔值的和组成,而不是四个字母中每一个的小计。我曾经看到布尔表可以用于计算,但我非常确信,通过更改pandas.crosstab()
命令,可以实现所需的输出。
我很乐意从你那里得到一些想法和想法。
谢谢。
如果您只想按column_1
(A、B、C、d(中的各个类别计算总数,那么分组和求和可能会有所帮助!您可以用类别调用列上的groupby
,然后对结果调用sum,如下所示:
df.groupby('column1').sum()