Python 如何通过多列过滤数据帧?

Python 如何通过多列过滤数据帧?,python,pandas,Python,Pandas,我试图基于两个逻辑语句在python中对pandas数据帧进行子集 i、 e 但是第3行的语法无效 是否有一种方法可以在一行中完成此操作?您需要使用逻辑运算符=等于返回布尔值,=正在设置值 尝试: 您需要使用逻辑运算符=等于返回布尔值,=正在设置值 尝试: 免责声明:正如@jp_data_analysis和提到的,以下解决方案不是最好的解决方案,因为它使用链接索引。请参考Matt W.和AChampion溶液 >>> d = {'col1': [1, 2, 1], 'col2'

我试图基于两个逻辑语句在python中对pandas数据帧进行子集

i、 e

但是第3行的语法无效


是否有一种方法可以在一行中完成此操作?

您需要使用逻辑运算符
=
等于返回布尔值,
=
正在设置值

尝试:


您需要使用逻辑运算符
=
等于返回布尔值,
=
正在设置值

尝试:


免责声明:正如@jp_data_analysis和提到的,以下解决方案不是最好的解决方案,因为它使用链接索引。请参考Matt W.和AChampion溶液

>>> d = {'col1': [1, 2, 1], 'col2': [3, 4, 2]}
>>> df = pd.DataFrame(data=d)

>>> df[df.col1==1][df.col2==3]

   col1  col2
0     1     3
另一种单线解决方案

>>> d = {'col1': [1, 2, 1], 'col2': [3, 4, 2]}
>>> df = pd.DataFrame(data=d)

>>> df[df.col1==1][df.col2==3]

   col1  col2
0     1     3

我添加了第三行,分别是
'col1'=1
'col2'=2
,这样我们就可以有一个额外的否定测试用例。

免责声明:正如@jp_data_analysis所提到的,以下解决方案不是最好的,因为它使用了链式索引。请参考Matt W.和AChampion溶液

>>> d = {'col1': [1, 2, 1], 'col2': [3, 4, 2]}
>>> df = pd.DataFrame(data=d)

>>> df[df.col1==1][df.col2==3]

   col1  col2
0     1     3
另一种单线解决方案

>>> d = {'col1': [1, 2, 1], 'col2': [3, 4, 2]}
>>> df = pd.DataFrame(data=d)

>>> df[df.col1==1][df.col2==3]

   col1  col2
0     1     3

我已经添加了第三行,带有
'col1'=1
'col2'=2
,因此我们可以有一个额外的阴性测试用例。

您需要在每个表达式周围添加
()
,否则会出现相同的错误。还要注意按位
&
与逻辑
运算符的使用。您需要在每个表达式周围添加
()
,否则会出现相同的错误。另请注意按位
&
与逻辑
运算符的使用。您混淆了赋值
=
和比较
=
。此问题重复。您混淆了作业
=
和比较
=
。此问题重复。普遍不鼓励使用向下投票链式索引,请参阅以了解原因。您是对的@jp_data_analysis。我已将此信息添加到原始答案中。普遍不建议使用向下投票链接索引,请参阅以了解原因。您是对的@jp_data_analysis。我已将此信息添加到原始答案中。