Как создать оценку отношения из значений в pandas DataFrame? - PullRequest
1 голос
/ 06 августа 2020

У меня есть DataFrame, который выглядит так:

   BIB#            COURSE  FINISH
0     1          COURSE 1  21.235
1     1          COURSE 2  23.345
2     1  STRAIGHT-GLIDING  20.690
3     2          COURSE 1  20.220
4     2          COURSE 2  22.535
5     2  STRAIGHT-GLIDING  19.910

Теперь я хочу рассчитать коэффициент соотношения для каждого BIB #. Оценка соотношения должна выглядеть следующим образом:

ПРОИЗВОДИТЕЛЬНОСТЬ = КУРС 1 + КУРС 2 / ПРЯМОЕ ГЛАВНОЕ

Значения для этого расчета находятся в FINI SH столбец.

Я думаю, что могу создать функцию, которая перебирает каждую строку в DataFrame, но я думаю, что есть лучший способ сделать это, используя Pandas? Спасибо!

(Если бы я создал функцию, я бы пропустил oop через каждый BIB # с помощью if-тестов)

1 Ответ

1 голос
/ 06 августа 2020

Используйте DataFrame.pivot, затем складывайте и разделяйте столбцы друг друга:

df1 = df.pivot('BIB#','COURSE','FINISH')
df1['PERFORMANCE'] = df1['COURSE 1'].add(df1['COURSE 2']).div(df1['STRAIGHT-GLIDING'])
print (df1)
COURSE  COURSE 1  COURSE 2  STRAIGHT-GLIDING  PERFORMANCE
BIB#                                                     
1         21.235    23.345             20.69     2.154664
2         20.220    22.535             19.91     2.147413

Если нужен тот же формат, что и исходный, добавьте DataFrame.stack с Series.reset_index:

df2 = df1.stack().reset_index(name='FINISH')
print (df2)
   BIB#            COURSE     FINISH
0     1          COURSE 1  21.235000
1     1          COURSE 2  23.345000
2     1  STRAIGHT-GLIDING  20.690000
3     1       PERFORMANCE   2.154664
4     2          COURSE 1  20.220000
5     2          COURSE 2  22.535000
6     2  STRAIGHT-GLIDING  19.910000
7     2       PERFORMANCE   2.147413
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...