Python / Pandas:选择具有多个条件的数据帧行 - col 1匹配col 2 OR col 3

时间:2018-04-10 00:15:23

标签: python python-3.x pandas dataframe

如果我有这样的df:

dfdict = {'1': ['a', 'a', 'a', 'b'], '2': ['a', 'b', 'c', 'a'], '3': ['b', 'a', 'd', 'c']}
df1 = pd.DataFrame(dfdict)

    1   2   3
0   a   a   b
1   a   b   a
2   a   c   d
3   b   a   c

我只想保存col 1匹配21匹配3的行。在这种情况下,将保存第0行和第1行:

    1   2   3
0   a   a   b
1   a   b   a

我试过了:

   df2 = df1.loc[df1['1'] == df1['2'] & df1['1'] == df1['3']]

但我收到错误TypeError: unsupported operand type(s) for &: 'str' and 'bool'

我还希望将col 123不匹配的其他行(即第2行和第3行)放在单独的df中。

1 个答案:

答案 0 :(得分:1)

选项1
eq,修复您的代码,

df1[df1['1'].eq(df1['2']) | df1['1'].eq(df1['3'])]

   1  2  3
0  a  a  b
1  a  b  a

选项2
np.vectorize

f = np.vectorize(lambda x, y, z: x in (y, z))
df[f(df1['1'], df1['2'], df1['3'])]

   1  2  3
0  a  a  b
1  a  b  a