Как сделать DataFrames, какие имена взяты из списка имен? - PullRequest
0 голосов
/ 18 апреля 2019

Я изучаю основы панд и работаю над заданием, которое нашел.

Я создал список, который содержит имена для будущих фреймов данных в Pandas. Вот этот список:

DF_names_by_year = ['year_1985', 'year_1986', 'year_1987', ..., 'year_2010', 'year_2011', 'year_2012', 'year_2013']

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

Это работает, если я наберу имя:

year_1985 = pd.DataFrame(teams_wins_salaries.loc[teams_wins_salaries['yearID'] == 1985])

но если я помещу это в цикл, я фактически создаю список пустых фреймов данных.

for i in range(len(DF_names_by_year)):
    DF_names_by_year[i] = pd.DataFrame(teams_wins_salaries.loc[teams_wins_salaries['yearID'] == i])
[Empty DataFrame
Columns: [yearID, teamID, W, salary]
Index: [], Empty DataFrame
Columns: [yearID, teamID, W, salary]
Index: [], Empty DataFrame
Columns: [yearID, teamID, W, salary]

Моя интуиция говорит мне, что должен быть способ отделить df и дать имя каждой части. Мне только интересно, можно ли дать им имена из списка.

Буду признателен за любые идеи о том, как решить проблему.

1 Ответ

1 голос
/ 19 апреля 2019

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

# LIST COMPREHENSION
year_df_list = [g for i,g in teams_wins_salaries.groupby('yearID')]

# DICTIONARY COMPREHENSION
year_df_dict = {i:g for i,g in teams_wins_salaries.groupby('yearID')}

Вы не теряете функциональность фрейма данных, если он хранится в списке или в диктовке. Таким образом, вместо того, чтобы поддерживать более 30 отдельных, именованных глобальных элементов, вы сохраняете один , который можно легко и гармонично обходить, зацикливать, отображать:

year_df_list[1]·head()
year_df_list[2].describe()
year_df_list[3].shape

year_df_dict['1985']·head()
year_df_dict['1990'].describe()
year_df_dict['1995'].shape
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...