Python разделить несколько столбцов по значениям в другом кадре данных - PullRequest
0 голосов
/ 31 марта 2020

Я сделал несколько Google, но не смог найти то, что я хочу. Большинство вопросов обновляют значения столбца из других столбцов. Моя ситуация заключается в том, что мне нужно обновить столбцы фрейма данных значениями из другого фрейма данных.

>>> print(df1)
  country road  score1  score2  score3
0      us   m1      10      20      30
1      us   m2      20      30      40
2  canada   m3      30      40      50
3  canada   m4      40      50      60
4  canada   m5      50      60      70

>>> print(df2)
  country road  divider
0      us   m1       10
1      us   m2       20
2  canada   m3       30
3  canada   m4       40
4  canada   m5       50

Ожидаемый результат:

  country road  score1    score2    score3
0      us   m1     1.0  2.000000  3.000000
1      us   m2     1.0  1.500000  2.000000
2  canada   m3     1.0  1.333333  1.666667
3  canada   m4     1.0  1.250000  1.500000
4  canada   m5     1.0  1.200000  1.400000

Каждое значение в фрейме данных результата получается путем деления значений в df1 на соответствующие значения в df2.

Любая помощь очень ценится.

1 Ответ

1 голос
/ 31 марта 2020

Создайте MultiIndex в обоих DataFrame с DataFrame.set_index, поэтому можно разделить на DataFrame.div:

df = (df1.set_index(['country','road'])
         .div(df2.set_index(['country','road'])['divider'], axis=0)
         .reset_index())
print (df)
  country road  score1    score2    score3
0      us   m1     1.0  2.000000  3.000000
1      us   m2     1.0  1.500000  2.000000
2  canada   m3     1.0  1.333333  1.666667
3  canada   m4     1.0  1.250000  1.500000
4  canada   m5     1.0  1.200000  1.400000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...