我需要合并重复的行。
我必须累加一些列( 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)
答案 0 :(得分:2)
使用pandas
,您可以groupby
的{{1}}列,并使用NAME
获取第一个AGE
和MONEY
的总和。我也将agg
放在sort_values
的旁边,这样任何AGE
都会在末尾(这将保证当您调用NaN
时,它将为非null值,因为每个first
至少有一行AGE
为非空:
NAME