基于列过滤器的pandas数据聚合

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

我有一个这样的数据框

col1  col2  col3  col4  col5
A     A1    X     1      2
A     A2    Y     2      2
A     A3    Z     1      2
B     B1    X     2      2
B     B2    Y     2      2
B     B3    Z     1      2
C     C1    X     2      2
C     C2    Y     1      2
C     C3    Z     1      2

我有这样的映射。

映射

col1  col3
 A --> X
 A --> Y
(A,B) --> Z
(A,B) --> (Y,Z)

这个映射就像我们在 excel 中使用的过滤器选项一样工作。 例如:对于 A-->X,我们将从 col1 中过滤 A,从 col3 中过滤 X,然后从 col4 中得到总和

对于 (A,B)-->Z,我们将从 col1 中过滤 A 和 B,从 col3 中过滤 Z,无论我们从 col4 中得到什么总和都应该被存储。

我尝试过 groupby 和 pivot_table 方法,但无法涵盖映射中的所有情况。

df1 = df.pivot_table(index= [col1,col3], columns = col3, values = col4, aggfunc='sum')

我的预期结果是。

col1  col2  X     Y      Z  YZ
A     A1    1     2      2  3
A     A2    1     2      2  3
A     A3    1     2      2  3
B     B1                 2  3
B     B2                 2  3
B     B3                 2  3

有什么方法可以使用 groupy 或 pivot_table 得到这个,请告诉我。

python pandas aggregate
© www.soinside.com 2019 - 2024. All rights reserved.