重塑数据框架,同时保留分类变量

时间:2018-12-10 05:27:08

标签: python pandas join merge pivot

我一直在尝试使用数据透视表来重塑具有以下形状的数据框。

User  Product  Gender  Age  Cost

1     1        M       25   10
1     2        M       25   12
1     3        M       25   14
1     4        M       25   15
2     2        F       19   29
2     4        F       19   14
2     6        F       19   17
2     8        F       19   30

我希望它看起来像这样:

User  Gender  Age   Cost

1     M        25   51   
2     F        19   90   

换句话说,我想按UserID求和,同时将其余的分类变量保留在数据框中。

我尝试过轮换数据,但是它删除了我想要保留的性别和年龄变量。

我尝试过使用groupby函数并对“费用”列求和,但是当我尝试添加性别和年龄变量时,它会产生NaN或为同一用户重新创建带有多个条目的原始表。

性别和年龄变量在各个用户之间是一致的。我想念什么?

1 个答案:

答案 0 :(得分:1)

您需要groupby + agg

df.groupby(['User','Gender']).agg({'Age':'first','Cost':'sum'}).reset_index()

   User Gender  Age  Cost
0     1      M   25    51
1     2      F   19    90

或者:

df.groupby(['User','Gender'], as_index=False).agg({'Age':'first','Cost':'sum'})