python - 如何使用列表有条件地从 Pandas DataFrame 中删除重复项
问题描述
我有一个df
,并且想删除所有重复的ID
.
Name Symbol ID
0 ZOO INC Remove 88579Y101
1 Zoo Inc ZZZ 88579Y101
2 A Inc AAA 90138A103
3 a inc. Remove 90138A103
4 2U Inc TWUO 90214J101
5 Keep Remove 111111111
但我只想删除Symbol == 'Remove'
. 输出应如下所示:
Name Symbol ID
0 Zoo Inc ZZZ 88579Y101
1 A Inc AAA 90138A103
2 2U Inc TWUO 90214J101
3 Keep Remove 111111111
我不能使用result_df = df.drop_duplicates(subset=['ID'], keep='first')
(或keep='last'
),因为数据集没有特定的模式。并且首先按字母顺序排序也无济于事。
虽然我知道我可以用 替换所有Remove
内容NaN
,然后使用此处提供的解决方案,但我正在寻找替代解决方案,因为我最终可能需要传递一个字符串列表。
Pandas 是否支持以下内容:result_df = df.drop_duplicates(subset=['ID'], keep=(df['Symbol'] != 'Remove'))
?
解决方案
用Series.duplicated
withkeep=False
表示所有的欺骗,用链法比较Remove
,链式用|
for 按位OR
,用 反转掩码~
:
m1 = df['ID'].duplicated(keep=False)
m2 = (df['Symbol'] == 'Remove')
df = df[~(m1 & m2)]
print (df)
Name Symbol ID
1 Zoo Inc ZZZ 88579Y101
2 A Inc AAA 90138A103
4 2U Inc TWUO 90214J101
5 Keep Remove 111111111
推荐阅读
- javascript - 我正在寻找一种方法来保持 Vuetify 中的底部导航图标颜色
- java - android.view.InflateException Binary XML file line #26 Error inflating class EditText
- speech-recognition - 使用 Amazon Polly Text to Speech 从音频文件中模仿真实语音波形的语调
- javascript - 如何更改 HTML 中搜索词的颜色?
- kubernetes - 从 terraform 运行 kubernetes 构建
- python - Pytorch RNN 总是为多元时间序列提供相同的输出
- json - 从 API 加载 JSON 数据时“无法解码任何 JSON 对象”
- javascript - 在同一登录表单中显示错误消息的最佳方法是什么
- ios - Xcode 10:图像集“customloading”引用文件“mygif.gif”,但该文件没有有效的扩展名
- c++ - Xcode 中的错误:线程 1:EXC_BAD_ACCESS(代码=1,地址=0xe8)