Итак, я пытаюсь найти среднее значение в кадре данных 1, где значения кадра данных 2 равны 1. Есть ли простой способ сделать это?

Примере:

    Dataframe 1:
           product1 product2 product3
    user1   2         4          5
    user2   1         3          4
    user3   3         2          1
    
    Dataframe 2: 
            product1 product2 product3
    user1   0        1        0
    user2   1        0        1
    user3   0        0        1

Итак, я бы взял среднее из этих значений:

    Mean Dataframe:
         product1  product2 product3
    user1          4
    user2 1                 4
    user3                   1

Таким образом, среднее значение, естественно, будет равно 2,5. Однако в моем примере у меня примерно 3000 строк и 300 столбцов, поэтому нельзя просто использовать .loc [column == x], поскольку столбцов слишком много.

2
Eloisa 12 Окт 2020 в 14:11

1 ответ

Лучший ответ

Если есть тот же индекс и те же значения столбцов, используйте DataFrame.where:

df3 = df1.where(df2.eq(1))
0
jezrael 12 Окт 2020 в 11:19