我不确定解决问题的最佳方法。假设我有一个数据帧
id decision
1 Yes
3 No
2 Yes
2 No
4 No
4 No
我想做的是根据id列删除重复项,这样每个id类型只有一个实例。然而,对于具有多个实例的id,如果决策中的任何值为"是",则在删除重复项后,剩下的一个的决策将为"是的"。
因此,在这种情况下,输出看起来像这样,因为id匹配2的至少一个决策是Yes。
id decision
1 Yes
3 No
2 Yes
4 No
我本来想使用drop_duplicates((,但我只是根据第一个或最后一个实例来决定保留哪个副本,因为它们的顺序不同。
有什么帮助吗?
s=df.sort_values('decision').drop_duplicates('id',keep='last').sort_index()
id decision
0 1 Yes
1 3 No
2 2 Yes
5 4 No
类似的东西可能会起作用(但它不会保留订单(-
import pandas as pd
df = pd.DataFrame({'id':[1,3,2,2,4,4], 'decision':['Yes', 'No', 'Yes', 'No', 'No', 'No']})
df
id decision
0 1 Yes
1 3 No
2 2 Yes
3 2 No
4 4 No
5 4 No
df.sort_values(['id', 'decision'], ascending=[True, False]).drop_duplicates(['id'], keep='first')
id decision
0 1 Yes
2 2 Yes
1 3 No
4 4 No