Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 行与行之间的某些值求和_Python_Pandas - Fatal编程技术网

Python 行与行之间的某些值求和

Python 行与行之间的某些值求和,python,pandas,Python,Pandas,我有一个37万行x 340列的数据框,在这个数据框中,我在列之间混合了数值和非数值 我想根据user\u id合并行,某些数值求和,非数值保留 给定表格: user_id points gender age 11111 10000 male 18 2222 4200 female 33 11111 30000 male 18 2222

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

我想根据
user\u 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个进行求和,但我对熊猫来说是新手,正在努力找到正确的方法,如果有任何提示,我将不胜感激

嘿,你可以使用
pandas aggregate sum

也可以在属性列表中传递多个

但是这必须是列的子集,否则你可以使用聚合和来实现

也可以在属性列表中传递多个

但是,这必须是列的子集,否则,您需要根据
'user\u 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

只要在要“保留”值的列中只有一个唯一的值,第一个值就可以使用。否则,实现模式以保持最常见的值,或“唯一”以获得所有值的列表

您想按
'user\u 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

只要在要“保留”值的列中只有一个唯一的值,第一个值就可以使用。否则,实现模式以保持最常见的值,或“唯一”以获得所有值的列表

我不认为它是数字和非数字的——年龄是数字,但你不想对年龄求和,对吗?@DSM是的,我只想合并某些数值。你可以做一个
groupby
,然后为每列选择聚合函数。在这种情况下,类似于
df.groupby('user_id').agg({'points':'sum','gender':'first'})
我不认为它是数字与非数字的——年龄是数字的,但你不想对年龄求和,对吗?@DSM是的,我只想合并某些数值您可以执行一个
groupby
,然后为每列选择聚合函数。在本例中,类似于
df.groupby('user_id').agg({'points':'sum','gender':'first'})