Как выбрать расположение элементов из двух фреймов данных Pandas одинаковой формы, где значения совпадают в определенном диапазоне?

#python #pandas #dataframe

#python #pandas #фрейм данных

Вопрос:

Как выбрать расположение элементов из двух фреймов данных Pandas одинаковой формы, где значения совпадают в определенном диапазоне? Код для этого может быть простым в написании, но я хочу знать, есть ли разумный способ сделать этот условный выбор (например, loc) с фреймами данных Pandas, поскольку он мне понадобится для больших файлов изображений, и я считаю, что Pandas, как правило, быстрый и эффективный.

Ответ №1:

Мне нужна дополнительная информация о

значения совпадают в определенном диапазоне

Но это пример выбора значений, которые одинаковы в двух DataFrame . Заменив тест любым другим тестом, вы могли бы достичь своих целей.

 # Test data
df1 = DataFrame({'col1':[1.2, 3.2, 4.2], 'col2':[0, 2.1, 4.8], 'col3': [2.0, 0, 8.2]})
df2 = DataFrame({'col1':[2.2, 3.2, 4.2], 'col2':[4.1, 0, 4.8], 'col3': [2.0, 4.7, 8.2]})

# df1
#    col1  col2  col3
# 0   1.2   0.0   2.0
# 1   3.2   2.1   0.0
# 2   4.2   4.8   8.2

# df2
#    col1  col2  col3
# 0   2.2   4.1   2.0
# 1   3.2   0.0   4.7
# 2   4.2   4.8   8.2

# Assuming the two DataFrame have the same index and columns you can simply do that

df2[df2 == df1]

#    col1  col2  col3
# 0   NaN   NaN   2.0
# 1   3.2   NaN   NaN
# 2   4.2   4.8   8.2
 

Комментарии:

1. Я имею в виду, что вместо df2 [df2==df1] я могу сделать df2[df2 == (a < df1 < b)]? Или я могу создать еще два dfs (df_a и df_b), вычитая ‘a’ и добавляя b к / из каждого элемента df1, а затем выполнить df2[[df2>df1_a] и df2<df1_b]]? Есть ли более эффективный способ?

2. Да, вы можете сделать что-то подобное df2[df1 < 1] или df2 = 1 . Это эффективный способ сделать это. Это зависит от вас.