将数据帧的一行与其他数据帧的行进行比较?

Compare one row of a dataframe with rows of other dataframe?

我有两个数据框 df and thresh_dfdf 的形状是 1000*200thresh_df1*200

我需要分别比较 thresh_df 行与 df 的每一行元素,我必须获取值小于 thresh_df 的值的相应列号.

我尝试了以下

compared_df = df.apply(lambda x : np.where(x < thresh_df.values))

但是我得到一个空数据框!如果问题不清楚,需要任何解释,请在评论中告诉我。

我认为没有必要只比较通过选择第一行转换为 Series 的一行 DataFrame:

df = pd.DataFrame({

         'B':[4,5,4,5,5,4],
         'C':[7,8,9,4,2,3],
         'D':[1,3,5,7,1,0],
         'E':[5,3,6,9,2,4],

})

thresh_df = pd.DataFrame({

         'B':[4],
         'C':[7],
         'D':[4],
         'E':[5],

})

compared_df  = df < thresh_df.iloc[0]
print (compared_df)
       B      C      D      E
0  False  False   True  False
1  False  False   True   True
2  False  False  False  False
3  False   True  False  False
4  False   True   True   True
5  False   True   True   True

然后使用 DataFrame.any 过滤至少一个 True 每行和过滤索引值:

idx = df.index[compared_df.any(axis=1)]
print (idx)
Int64Index([0, 1, 3, 4, 5], dtype='int64')

详情:

print (compared_df.any(axis=1))
0     True
1     True
2    False
3     True
4     True
5     True
dtype: bool