我有一个这样的数据框
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 得到这个,请告诉我。