Python 如何基于多列筛选熊猫数据集?

Python 如何基于多列筛选熊猫数据集?,python,pandas,lambda,Python,Pandas,Lambda,我正在尝试一些ifthen逻辑,但我在数据帧中工作,找不到任何示例 我试图做的是过滤这个数据集,使其只包含 col1=col3,col2=col4 col1 col2 col3 col4 Wagner John Wagner John Jane Mary Klein Peter Schneider Megan Wicker Sam Schneider Megan Schneider

我正在尝试一些ifthen逻辑,但我在数据帧中工作,找不到任何示例

我试图做的是过滤这个数据集,使其只包含 col1=col3,col2=col4

col1       col2     col3       col4
Wagner     John     Wagner     John
Jane       Mary     Klein      Peter 
Schneider  Megan    Wicker     Sam
Schneider  Megan    Schneider  Megan
结果

col1       col2     col3        col4
Wagner     John     Wagner      John
Schneider  Megan    Schneider   Megan
我这里的代码不起作用

 df1.apply(lambda x : x['col1'] if x['col1'] == x['col1'] and x['col2'] == x['col2'] else "", axis=1
我会使用以下方法:

或“经典”方法:

In [206]: df.loc[(df.col1==df.col3) & (df.col2==df.col4)]
Out[206]:
        col1   col2       col3   col4
0     Wagner   John     Wagner   John
3  Schneider  Megan  Schneider  Megan

乱搞
numpy
并假设列是它们的特定顺序

df[np.equal(*df.values.T.reshape(2, 2, -1)).all(0)]

        col1   col2       col3   col4
0     Wagner   John     Wagner   John
3  Schneider  Megan  Schneider  Megan

如果列的顺序不同

cols = ['col1', 'col2', 'col3', 'col4']
v = np.column_stack([df[c].values for c in cols])
df[np.equal(*v.T.reshape(2, 2, -1)).all(0)]

我累了,出现了一个错误ValueError:没有目标无法分配object@OptimusPrime,你说的是第一种方法还是第二种方法?@OptimusPrime,确保你使用
==
而不是
=
当我使用df.loc[(df.col1==df.col3)&(df.col2==df.col4)]和df.loc[(df.col1==df.col3)df.loc]时,我为什么会得到不同的结果[(df.col2==df.col4)]@OptimusPrime,我没有得到你的第二行代码:
df.loc[(df.col1==df.col3)df.loc[(df.col2==df.col4)]
cols = ['col1', 'col2', 'col3', 'col4']
v = np.column_stack([df[c].values for c in cols])
df[np.equal(*v.T.reshape(2, 2, -1)).all(0)]