在行之间求和某些值

时间:2018-06-22 14:26:00

标签: python pandas

我有一个370000行x 340列的数据框,在这个DataFrame中,我在列之间混合了数值和非数值。

我想基于user_id合并行,将某些数字值相加,并保留非数字值。

给定表:

user_id          points    gender    age
11111              10000      male    18
 2222               4200    female    33
11111              30000      male    18
 2222                 10    female    33
11111              20000      male    18

我希望得到这样的结果:

user_id          points    gender     age
11111              60000      male     18
2222                4210      female   33

在对行求和时,我需要求和。在340个价值中,有300个价值高昂,但我不知如何努力做到这一点的熊猫爱好者,不胜感激。

2 个答案:

答案 0 :(得分:3)

您要按DataFrame对原始'user_id'进行分组。然后,您可以汇总分组的框架并指定要在每列上使用的功能的字典。

df.groupby('user_id').agg({'points': 'sum', 
                           'gender': 'first', 
                           'age': 'first'}).reset_index()

输出:

   user_id  points  gender  age
0     2222    4210  female   33
1    11111   60000    male   18

只要您要“保留”该值的列中只有一个唯一值,“ First”将起作用。否则,实施模式以保留最常见的值,或者“唯一”以获取所有值的列表。

答案 1 :(得分:1)

嘿,您可以使用pandas aggregate sum

喜欢

df.groupby(['user_id'])[["points"]].sum()

df.groupby(['user_id'])[["list_of_attribute"]].sum()

还可以在columns中传递多个list_of_attributes 但这必须在subset列中,否则必须在KeyError列中。