我有一个Python 3.6x的Pandas 0.19.2数据框如下。我想要根据条件逻辑,使用相同的Id
来执行drop_duplicates()
。
import pandas as pd
import numpy as np
np.random.seed(1)
df = pd.DataFrame({'Id':[1,2,3,4,3,2,6,7,1,8],
'Name':['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'K'],
'Size':np.random.rand(10),
'Age':[19, 25, 22, 31, 43, 23, 44, 20, 51, 31]})
如果可能向量化,基于我下面描述的逻辑,最有效的方法是什么?
1)在删除重复项之前,将重复的Id
条目的Size
求和。
2)删除相同Id
记录的重复项,保留具有较大Age
的记录。
期望的输出为:
Age Id Name Size
1 25 2 B 0.812662
3 31 4 D 0.302333
4 43 3 E 0.146870
6 44 6 G 0.186260
7 20 7 H 0.345561
8 51 1 I 0.813790
9 31 8 K 0.538817
df.groupby('Id').apply(sum)
,但很明显这并没有给我原始的 df 索引。按年龄排序并保留最后一个是有道理的。 - Zhubarb