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