温馨提示:本文翻译自stackoverflow.com,查看原文请点击:python - Check if any value ( multiple columns) of one data frame exists in any values (multiple columns) of
pandas python python-3.x

python - 检查一个数据帧的任何值(多列)是否存在于

发布于 2020-03-27 12:00:57

我有两个具有不同格式的相似数据的数据框

df1:

Nodo      X          Y          Z
CTB3901   CTBX3901   CTBY3901   CTBZ3901
MTR5331   MTRX5331   MTRY5331   MTRZ5331
ADC3451   ADCX3451   ADCY3451   ADCZ3451

df2:

Site_x     Site_y
CTBX3901E  CTBX3901
CTB3901    CTB3901E
CTBZ3901E  CTBZ3901
CTBY3901E  CTB3901
MADX6379E  MADX6379

我想检查任何df2['Site_x', 'Site_y']列中是否有来自的条目df1['Nodo','X','Y','Z']数据不必在两个帧中都位于同一行中。

检查后的最终输出如下

Site_x     Site_y   Checked
CTBX3901E  CTBX3901  True
CTB3901    CTB3901E  True
CTBZ3901E  CTBZ3901  True
CTBY3901E  CTB3901   True
MADX6379E  MADX6379  False

请原谅我笨拙的数据集。为了使这一部分正确无奈,我不得不粘贴与我相同的数据。

我已经尝试过使用以下语法的isin方法,但是输出在整个“ Checked”列中都为False。

df2['Checked'] = df2[['Site_x','Site_y']].isin(df1[['Nodo','X','Y','Z']]).any(axis=1)

查看更多

查看更多

提问者
vvk24
被浏览
14
Quang Hoang 2019-07-03 23:40

您非常接近:

df2['checked'] = df2.apply(lambda x: x.isin(df1.stack())).any(axis=1)