熊猫-加入重复的行

时间:2018-10-17 02:33:23

标签: python-3.x pandas numpy optimization

我需要合并重复的行。
我必须累加一些列( MONEY ),我必须保留一些列( AGE )。

DataFrame I Have:
     NAME  AGE   MONEY
0     ANA   20     2.5
1     BOB   17     2.0
2    JOHN   23     1.0
3    JOHN   23     2.0
4  NEYMAR   25  1000.0
5  NEYMAR   25  2000.0
6  NEYMAR   NaN  3000.0

DataFrame I Need:
     NAME  AGE   MONEY
0     ANA   20     2.5
1     BOB   17     2.0
2    JOHN   23     3.0
3  NEYMAR   25  6000.0

我的行数超过2万,速度很重要。
我正在使用重复函数以及 df.iterrows()中的行作为索引。
这要花很长时间。

您能帮我找到一个使用pandas或numpy的快速方法吗?

谢谢!

测试代码:

import pandas as pd

people = pd.DataFrame({
    'NAME': ['ANA', 'BOB', 'JOHN', 'JOHN', 'NEYMAR', 'NEYMAR', 'NEYMAR'] ,
    'AGE': [20, 17, 23, 23, 25, 25, 25],
    'MONEY': [2.5, 2.00, 1.0, 2.0, 1000,2000,3000],
    })

print(people)
print()

people_unique = pd.DataFrame({
    'NAME': ['ANA', 'BOB', 'JOHN', 'NEYMAR'] ,
    'AGE': [20, 17, 23, 25],
    'MONEY': [2.5, 2.00, 3.0, 6000],
    })

print(people_unique)

1 个答案:

答案 0 :(得分:2)

使用pandas,您可以groupby的{​​{1}}列,并使用NAME获取第一个AGEMONEY的总和。我也将agg放在sort_values的旁边,这样任何AGE都会在末尾(这将保证当您调用NaN时,它将为非null值,因为每个first至少有一行AGE为非空:

NAME