熊猫:使用波浪号运算符通过两个过滤器返回逆数据

RDJ

我正在使用过滤两个DataFrame列isin目的是返回两个不同的DataFrame:一个满足过滤条件,另一个不满足。实际上,DataFrame应该完全相反。但是,我似乎无法以假定的方式使用波浪号运算符。

一个可重现的示例:

raw_data = {
    'id': ['s1', 's2', 's1', 's4', 's2', 's5', 's4', 's2'], 
    'car': ['ford', 'bmw', 'ford', 'mazda', 'ford', 'bmw', 'audi', 'bmw']}

df_a = pd.DataFrame(raw_data, columns= ['id', 'car'])

values1 = ['s1', 's2']
values2 = ['bmw', 'ford']
df_a[(df_a['id'].isin(values1)) & (df_a['car'].isin(values2))]

返回此:

    id  car
0   s1  ford
1   s2  bmw
2   s1  ford
4   s2  ford
7   s2  bmw

哪个是对的。但是,如果尝试使用以下方法来扭转这种情况:

df_a[~(df_a['id'].isin(values1)) & (df_a['car'].isin(values2))]

我得到:

    id  car
5   s5  bmw

这不是相反的。我尝试将第二个波浪号添加到第二个过滤器,但是无法使其正常工作。我在哪里错了,或者有更好的方法来做到这一点?

埃德·楚姆

您需要其他括号:

In [411]:
df_a[~((df_a['id'].isin(values1)) & (df_a['car'].isin(values2)))]
#     ^                                                        ^
Out[411]:
   id    car
3  s4  mazda
5  s5    bmw
6  s4   audi

您所做的只是反转第一个条件。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用 & 运算符将两个以上的过滤器应用于 DataFrame

如何在Solr中标记由“ AND”运算符连接的两个过滤器?

当与 np.where 过滤器一起使用时,使用 OR 运算符似乎只采用两个条件中的第一个

熊猫过滤器没有〜而不是运算符

熊猫多过滤器行运算符

在Directus中使用过滤器运算符(<,>,<=,> =或)

RxJava过滤器运算符

使用OR逻辑运算符组合任意数量或Q个对象的过滤器

正确使用波浪号运算符作为输入参数

使用%in%运算符对两个数据帧进行dplyr过滤

如何使用运算符'and'和/或'or'映射两个过滤列表

使用过滤器时如何从两个数组返回2个值

Python中的波浪号运算符

为什么要使用两个过滤器?

使用两个或多个过滤器对数据进行排序/排序

带有数组和 OR 运算符的 Django 过滤器数据库

Flask-SQLAlchemy过滤器和运算符

和 Django 过滤器中的运算符

Boto过滤器中的Python比较运算符

无法让“或”运算符在 dplyr 过滤器内工作

kendo网格过滤器运算符丢失

结合两个过滤器

如何使用两个过滤器对两个数据字段的列表进行排序

使用管道运算符在两个python脚本之间流式传输多批数据

使用位运算符比较两个整数

使用 AND 运算符和两个选择?

使用 == 运算符比较两个对象

如何将“ ANY”过滤器与SQLAlchemy中的“ << =“运算符结合使用?

在使用过滤器的表达式中应用三元运算符