Python 如何基于多列筛选熊猫数据集?
我正在尝试一些ifthen逻辑,但我在数据帧中工作,找不到任何示例 我试图做的是过滤这个数据集,使其只包含 col1=col3,col2=col4Python 如何基于多列筛选熊猫数据集?,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
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)]