#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