Сравнивать одну строку информационного кадра со строками другого информационного кадра? - PullRequest
1 голос
/ 28 февраля 2020

У меня есть два кадра данных, скажем 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))

Но я получил пустой фрейм данных! Если вопрос неясен и требует каких-либо объяснений, пожалуйста, дайте мне знать в комментариях.

1 Ответ

1 голос
/ 28 февраля 2020

Я думаю, что применять не нужно, сравнивайте только одну строку DataFrame, преобразованную в Series, выбрав первую строку:

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
...