如果我有这样的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
匹配2
或1
匹配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 1
与2
或3
不匹配的其他行(即第2行和第3行)放在单独的df中。
答案 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