Моя цель - выполнить групповую игру, затем создать скользящую общую статистику и затем сдвинуться. Мне нужно, чтобы перенести первый экземпляр каждого уникального игрока. Прямо сейчас он сдвигает весь фрейм данных один раз, а не делает это для каждого сгруппированного игрока.
Исходные данные -
player date won
0 A 2016-01-11 0
1 A 2016-02-01 0
2 A 2016-02-01 1
3 A 2016-02-01 1
4 A 2016-10-24 0
5 A 2016-10-31 0
6 A 2018-10-22 0
7 B 2016-10-24 0
8 B 2016-10-24 1
9 B 2017-11-13 0
Вещи, которые я пробовал -
1
temp = temp_master.groupby('player', sort=False)[count_fields].rolling(10, min_periods=1).sum().shift(1).reset_index(drop=True)
temp = temp.add_suffix('_total')
temp['won_total'].head(10)
0 NaN
1 0.0
2 0.0
3 1.0
4 2.0
5 2.0
6 2.0
7 2.0
8 0.0
9 1.0
2
temp = temp_master.groupby('player', sort=False)[count_fields].shift(1).rolling(10, min_periods=1).sum().reset_index(drop=True)
temp = temp.add_suffix('_total')
temp['won_total'].head(10)
0 NaN
1 0.0
2 0.0
3 1.0
4 2.0
5 2.0
6 2.0
7 2.0
8 2.0
9 3.0
3
temp = temp_master.groupby('player', sort=False)[count_fields].rolling(10, min_periods=1).sum().reset_index(drop=True)
temp = temp.add_suffix('_total')
temp = temp.shift(1)
temp['won_total'].head(10)
0 NaN
1 0.0
2 0.0
3 1.0
4 2.0
5 2.0
6 2.0
7 2.0
8 0.0
9 1.0
Это то, что мне нужно, чтобы результаты были -
0 NaN
1 0.0
2 0.0
3 1.0
4 2.0
5 2.0
6 2.0
7 NaN
8 0.0
9 1.0
индекс # 7 должен равняться NaN. Это должен быть первый экземпляр игрока B, и я хочу, чтобы он перемещался в первом экземпляре каждого нового игрока, чтобы суммировать статистику игрока.
индекс 8 должен быть равен 0
индекс 9 должен равняться 1
Похоже, что попытки № 1 и № 3 близки, но это не назначает значение NaN для нового игрока. № 3 больше не играет сгруппированным игроком, поэтому я знаю, что это не сработает.
Кроме того, это будет сделано для большого количества данных (около 100K-300K строк), а столбец 'count_fields' содержит около 3K-4K столбцов, которые я вычисляю. Просто что-то, о чем нужно знать.
Какие-нибудь идеи о том, как создать статистику бега по игроку и сдвинуть вниз для каждого игрока?