正在删除列中的重复值,依赖于另一个的值



我不确定解决问题的最佳方法。假设我有一个数据帧

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

最新更新