我正在尝试一些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
答案 0 :(得分:4)
我使用DataFrame.query()方法:
In [205]: df.query("col1==col3 and col2==col4")
Out[205]:
col1 col2 col3 col4
0 Wagner John Wagner John
3 Schneider Megan Schneider Megan
或“经典”方法:
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
答案 1 :(得分:1)
弄乱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)]