Pandas - 按相同维度分组

问题描述 投票:0回答:1

我有一个包含五列的数据框:G1、G2、G3、G4 和税收。我按 G 和 Tax 对每个 G 列进行分组,以计算有多少行的值为 1。但是每个 G 的结果维度不同,因为有些 G 只有 0 个值。

这是我的代码:

self.instance.df.groupby(["G1", "Tax"]).size().drop(0)
self.instance.df.groupby(["G2", "Tax"]).size().drop(0)

我删除了索引 0,因为我只需要 1 个值。

我期待的结果是:

G1  Tax
1   1.1   5
    1.2   7
    1.5   3
    1.7   0

我得到的结果:

 G1 Tax
 1  1.1   5
    1.2   7
    1.5   3
python pandas dataframe group-by series
1个回答
0
投票

IIUC,你可以大大简化你的逻辑,使用:

df.set_index('Tax').filter(like='G').eq(1).groupby(level='Tax').sum()

示例:

# input
   G1  G2  G3  G4 Tax
0   0   1   0   0   A
1   1   1   0   1   A
2   1   1   0   0   A
3   0   1   0   1   B

# output
     G1  G2  G3  G4
Tax                
A     2   3   0   1
B     0   1   0   1
© www.soinside.com 2019 - 2024. All rights reserved.