#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
. Это эффективный способ сделать это. Это зависит от вас.