Я работаю над анализом спорта, особенно футбола, Я рассчитываю недельный рейтинг команд. Я хочу отслеживать изменения их положения. Вот мои образцы данных, которые повторяют мою проблему.
df = pd.DataFrame()
df ['Season'] = ['1314','1314','1314','1314','1314','1314','1314','1314','1314','1415','1415','1415','1415','1415','1415','1415','1415','1415']
df ['Team'] = ['A','B','C','A','B','C','A','B','C','A','B','C','A','B','C','A','B','C']
df ['GW'] = [1,1,1,2,2,2,3,3,3,1,1,1,2,2,2,3,3,3]
df['Position'] = [1,2,3,3,1,2,2,3,1,2,1,3,2,1,3,3,2,1]
ТАК у меня есть все еженедельные позиции и т.д. Чтобы отслеживать изменения позиции, я сначала отсортирую фрейм данных следующим образом:
df = df.sort_values (['Season','Team'])
после сортировки я применяю функцию diff(), чтобы получить изменение следующим образом:
v = df.Position.diff()
v[0] = 0
df ['Position_change']= v
Я хотел отслеживать изменения для каждого GW.
В моем кадре данных у меня есть 3 GW. Я хочу, чтобы все GW1 для каждой команды были равны 0 при смене позиции.
Вторая проблема заключается в том, что изменения вносятся между двумя командами (чего я не хочу), если я использую diff().
Вы можете увидеть на прикрепленной картинке:

Может ли кто-нибудь дать совет по этому поводу?






ИИУК, вам нужно:
df['Position_Change']=df.groupby(['Season','Team'])['Position'].apply(lambda x : x.diff().fillna(0))
print(df)
Season Team GW Position Position_Change
0 1314 A 1 1 0.0
3 1314 A 2 3 2.0
6 1314 A 3 2 -1.0
1 1314 B 1 2 0.0
4 1314 B 2 1 -1.0
7 1314 B 3 3 2.0
2 1314 C 1 3 0.0
5 1314 C 2 2 -1.0
8 1314 C 3 1 -1.0
9 1415 A 1 2 0.0
12 1415 A 2 2 0.0
15 1415 A 3 3 1.0
10 1415 B 1 1 0.0
13 1415 B 2 1 0.0
16 1415 B 3 2 1.0
11 1415 C 1 3 0.0
14 1415 C 2 3 0.0
17 1415 C 3 1 -2.0
я думаю, что-то вроде df['new_col']=np.where((df.Position ==1),'Champion','')?
Позвольте мне привести вам пример
@Zephyr, если это отдельный вопрос, было бы лучше, если бы вы разместили вопрос, я бы ответил на них. :)
В порядке. Я опубликую через несколько минут.
Спасибо. Только что отправил.
Если я хочу создать новый столбец, в котором команда, занявшая позицию 1, станет «чемпионом». Как я мог это сделать?