将数据帧的一行与其他数据帧的行进行比较?
Compare one row of a dataframe with rows of other dataframe?
我有两个数据框 df and thresh_df
。 df
的形状是 1000*200
而 thresh_df
是 1*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
我有两个数据框 df and thresh_df
。 df
的形状是 1000*200
而 thresh_df
是 1*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