как обновить фрейм данных с другим фильтрованным фреймом данных - PullRequest
1 голос
/ 14 мая 2019

У меня есть 2 кадра данных. Мне нужно обновить столбец в первом со средним значением во втором, сгруппированных по индексу. вот пример df1 (col1 - индекс)

      col2 col3
col1           
a        0    X
b        0    0
c        0    0
d        0    0

df2 (col1 - индекс)

    col2  col3
col1            
a        1     0
a        3     0
d        2     0
d        4     0

Мне нужно среднее значение в col2 df2 (a = 2, d = 3) и обновить df1 только для строк с col3 = X

Я пробовал это

df1.loc[df1.col3=='X'].update(df2.groupby(df2.index),'col2'].mean().to_frame())

Это работает, только если я не использую loc.

результат, который я пытаюсь получить df1 (col1 - индекс)

    col2 col3
col1           
a        2    X
b        0    0
c        0    0
d        0    0

1 Ответ

1 голос
/ 14 мая 2019

Использование:

m=df2.groupby(df2.index).col2.mean()
df1.loc[df1.col3=='X','col2']=m
print(df1)

      col2 col3
col1           
a        2    X
b        0    0
c        0    0
d        0    0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...