pandas - 使用 isin 函数进行熊猫过滤
问题描述
我有两个数据框,如下所示 df1:
ID Name
1 Sachin
2 Kholi
3 Dravid
df2:
ID Run
1 20
2 60
2 10
1 5
从上面我想通过仅在 df2 中获取唯一 ID 来过滤 df1:
预期输出:
ID Name
3 Dravid
我试过下面的代码
def diff(first, second):
second = set(second)
units_in_unit_table = [item for item in first if item not in second]
return units_in_unit_table
id_df2 = diff(df2, df1)
df3 = df1[df1['ID'].isin(id_df2)]
解决方案
看来您的解决方案应该通过将唯一值传递给isin
bySeries.unique
与反转掩码 by来简化~
:
df3 = df1[~df1['ID'].isin(df2['ID'].unique())]
或通过set
:
df3 = df1[~df1['ID'].isin(set(df2['ID']))]
print (df3)
ID Name
2 3 Dravid
推荐阅读
- gcc - 从 GCC 切换到 Clang 的常见问题是什么?
- linux - 我可以在 awk 的不同代码块中使用不同的分隔符吗?
- php - 获取两个日期之间的总差异到毫秒 php
- c++ - Qt:使用'mailto:'打开用户的电子邮件客户端失败的gmail
- ruby-on-rails - Rails & Handlebars:模板 URL 的错误 URI 错误
- angular - 为什么在 Jasmine Angular 单元测试中没有触发响应式表单控件的更改事件?
- javascript - 如何使用 puppeteer 在弹出窗口中模仿 div 内的鼠标滚动?
- ios - Cloud Firestore Swift:如何在标签中显示数字字段
- c# - Jenkins 管道 - 在 C# 中获取管道状态
- python - 在哪里可以找到旧版本 google-cloud-python 的文档?