Имя pandas dataframe, основанное на выводе функции Groupby - PullRequest
0 голосов
/ 09 декабря 2018

У меня есть набор данных, который состоит из всех снимков, сделанных на большом количестве футбольных соревнований за несколько сезонов.Я написал следующий скрипт для создания подмножеств для каждого соревнования и соответствующего сезона.

import pandas as pd
import csv
shots = pd.read_csv("C:/Users/HJA/Desktop/Betting/understatV0.01/shots.csv", encoding='iso-8859-1')

shots_premier_league = shots.groupby(['Competition']).get_group('Premier_League')
shots_bundesliga = shots.groupby(['Competition']).get_group('Bundesliga')
shots_la_liga = shots.groupby(['Competition']).get_group('La_Liga')
shots_ligue_1 = shots.groupby(['Competition']).get_group('Ligue_1')
shots_serie_a = shots.groupby(['Competition']).get_group('Serie_A')

До этого момента все шло хорошо.Однако сейчас я хочу подразделить каждое соревнование на образцы для каждого сезона.Я использую следующий сценарий (в данном случае я использую в качестве примера Премьер-лигу:

shots_premier_league_2014 = shots_premier_league.groupby(['Season']).get_group('2014')
shots_premier_league_2015 = shots_premier_league.groupby(['Season']).get_group('2015')
shots_premier_league_2016 = shots_premier_league.groupby(['Season']).get_group('2016')
shots_premier_league_2017 = shots_premier_league.groupby(['Season']).get_group('2017')
shots_premier_league_2018 = shots_premier_league.groupby(['Season']).get_group('2018')

Это приводит к следующей ошибке: enter image description here

ЯНа 100% уверен, что 2014 год является действительным значением. Кроме того, как я могу написать функцию, которая автоматически включает в себя конкуренция и сезон в названии кадра данных pandas?

1 Ответ

0 голосов
/ 09 декабря 2018

Я думаю, что проблема в 2014 является целым числом, поэтому нужно удалить '':

.get_group(2014)

Но лучше здесь создать dictionary of DataFrames как, потому что глобальные не рекомендуются:

dfs = dict(tuple(shots_premier_league.groupby(['Season'])))

И затем выберите каждый DataFrame по ключу, например:

print (dfs[2014])
print (dfs[2015])

Как мне написать функцию, которая автоматически включает название и сезон в названиекадра данных панд?

dfs = dict(tuple(shots_premier_league.groupby(['Competition','Season'])))
print (dfs[('Bundesliga', 2014)])

Если хотите выбрать по строкам:

d = dict(tuple(df.groupby(['Competition','Season'])))
#python 3.6+ solution with f-strings
dfs = {f'{k1}_{k2}' :v for (k1, k2), v in d.items()}
#python bellow
#dfs = {'{}_{}'.format(k1, k2) :v for (k1, k2), v in d.items()}
print (dfs['Bundesliga_2014'])

И если хотите увидеть все ключи для ваших данных:

print (dfs.keys())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...