mko*_*eck 18 python dataframe pandas
我有以下数据框:
df = pd.DataFrame([[0, 1, 7, 0, 1, 8, 3, 0],
[7, 3, 4, 0, 4, 9, 7, 0]],
columns=pd.MultiIndex.from_product([["first", "second"],
["A", "B", "C", "D"]]))
print(df)
first second
A B C D A B C D
0 0 1 7 0 1 8 3 0
1 7 3 4 0 4 9 7 0
Run Code Online (Sandbox Code Playgroud)
我想检查 first 中的值是否存在于 second 的任何列中。只应比较同一行。
生成的数据框应如下所示:
A B C D
0 True True False True
1 True False True True
Run Code Online (Sandbox Code Playgroud)
这样做的最佳方法是什么?我已经玩过 df["first"].isin(df["second"] 但它只将 A 与 A、B 与 B 进行比较,......也尝试将它与 .any() 结合使用,但我不能似乎使它起作用。
非常感谢您的帮助!
先感谢您。
Shu*_*rma 10
np.any(df['first'].T.values[:, :, None] == df['second'].values, axis=-1).T
Run Code Online (Sandbox Code Playgroud)
array([[ True, True, False, True],
[ True, False, True, True]])
Run Code Online (Sandbox Code Playgroud)
小智 5
另一种解决方案:
df['first'].apply(lambda x: x.isin(df.loc[x.name, ('second')]), axis=1)
Run Code Online (Sandbox Code Playgroud)
输出:
A B C D
0 True True False True
1 True False True True
Run Code Online (Sandbox Code Playgroud)