Применить операцию к столбцу

#python #pandas

#python #pandas

Вопрос:

Я импортирую фрейм данных, в котором есть столбец «Цели», который накапливает предыдущие результаты, вот так:

 print (df[df['name']=='Player Name']['Goals'])

152     1.0
828     2.0
1591    3.0
  

Я точно знаю, что игрок забил только один гол за игру, поэтому столбец должен быть похож:

 152     1.0
828     1.0
1591    1.0
  

Кстати, та же логика применима ко всем другим столбцам scout:

 ...
FF                 322 non-null float64
FS                 568 non-null float64
Goals              80 non-null float64
A                  63 non-null float64
PI                 834 non-null float64
SG                 140 non-null float64
DD                 46 non-null float64
DS                 611 non-null float64
FC                 602 non-null float64
GC                 3 non-null float64
GS                 45 non-null float64
FD                 231 non-null float64
CA                 190 non-null float64
FT                 34 non-null float64
I                  112 non-null float64
PP                 4 non-null float64
CV                 9 non-null float64
...
  

ВОПРОС

Каков наилучший способ исправить эту логику и применить это вычитание к подмножеству столбцов выше?


Редактировать:

 df['G'] = df['G'].diff()
  

ВОЗВРАТ

 Name: G, dtype: float64
152    NaN
828    NaN
1562   NaN
  

Комментарии:

1. Взгляните на функцию diff . Но вам понадобится groupby перед diff, чтобы избежать вычитания цели одного игрока из другого. Опубликуйте свой полный фрейм данных для лучшего ответа

2. присвоить им значение 1?

3. @CodeDifferent пожалуйста, обратитесь к моей правке

Ответ №1:

Пишу это вслепую, поскольку вы не показали полный фрейм данных:

 for col in ['Goals', 'FF', 'FS', ...]:
    tmp = df.groupby('name')[col].diff().fillna(1)
    df[col] = tmp