Python Can';t检查数组中的任何项是否也在另一个数据帧中

Python Can';t检查数组中的任何项是否也在另一个数据帧中,python,pandas,numpy,dataframe,Python,Pandas,Numpy,Dataframe,我已经创建了一个数据帧c和数组b。我已经成功地检查了c第一列中的任何数字是否也在b中 a = np.array([ [2.,1.,1.], [3.,4.,1.], [5.,6.,1.], [7.,8.,1.]]) c = pd.DataFrame(data=a, dtype = 'float64') b = np.array(([

我已经创建了一个数据帧
c
和数组
b
。我已经成功地检查了
c
第一列中的任何数字是否也在
b

a = np.array([
                [2.,1.,1.],
                [3.,4.,1.],
                [5.,6.,1.],
                [7.,8.,1.]])

c = pd.DataFrame(data=a,
                 dtype = 'float64')


b = np.array(([1, 10, 5, 2]), dtype = 'float64')

for i in range(len(c)):
    if c.iloc[i,0] in b:
        print ("Great")
    else:
        print ('sad')
输出:

Great
sad
Great
sad
但是,当检查b中的任何项是否在c数据帧中时,以下命令不起作用。为什么呢

for i in range(len(b)):
    if b[i,0] in c:
        print ('hola')
    else:
        print ('False')

我认为最好是避免循环,因为速度慢。因此,对于按数组检查列,请使用:

对于检查所有值,请使用for检查
布尔数据帧中的每行是否至少有一个
True

mask2 = c.isin(b).any(axis=1)
print (mask2)
0    True
1    True
2    True
3    True
dtype: bool

e1 = np.where(mask2, 'hola', 'False')
print (e1)
['hola' 'hola' 'hola' 'hola']
详情:

print (c.isin(b))
       0      1     2
0   True   True  True
1  False  False  True
2   True  False  True
3  False  False  True
如果要检查
c
中的
b
,请通过以下方式将数据帧的平展值用于
1d数组


但是如何使用反之亦然的逻辑进行检查,即“b”是否在任何“c”中?谢谢!非常有用。有没有可能把它放到IF/Else语句中?我试图根据结果更新np.zeros中的值…不确定是否理解。你能再解释一下吗?因为在
numpy/pandas
中用于
if else
使用
numpy.where
,但不确定您需要什么;)基本上,我有一个带有客户ID的主列表c(dataframe)和另一个也包含客户ID的子集列表b(float64)。我想创建一个新列或一个单独的表,如果客户同时在列表a和b中,那么它将更新为1,否则为0。然后需要
c['flag']=c['ID']。isin(b)。astype(int)
?如果需要,用数组
b
检查列
id
print (c.isin(b))
       0      1     2
0   True   True  True
1  False  False  True
2   True  False  True
3  False  False  True
mask3 = np.in1d(b, c.values.ravel())
print (mask3)
[ True False  True  True]