Использовать apply или iterrows в python вместо groupby? - PullRequest
0 голосов
/ 28 мая 2020
df = pd.DataFrame([[15000, 2015], [20000,2015], [25000,2015], [15000, 2016], [20000,2016], [25000,2016], [10500, 2017], [54000,2017], [34000,2017]], columns=['income', 'year'])


income          year
15000           2015
20000           2015
25000           2015
19000           2016
36000           2016
20000           2016
10500           2017
54000           2017
34000           2017

Привет,

Если у меня есть фрейм данных, подобный приведенному выше, и я хочу l oop через каждый год в python и создать значение медианного дохода для каждого года, как бы Я go об этом?

Будет ли лучше всего применяться функция apply или функция groupby?

Я могу заставить это работать:

df.groupby(df.year)[['income']].median()

Мне было интересно, была альтернатива, такая как apply или iterrows?

Большое спасибо.

1 Ответ

1 голос
/ 28 мая 2020

df.groupby - лучший способ go при выполнении определенных агрегатов.

Это правильный способ его использования:

In [85]: df.groupby('year', as_index=False)['income'].median()
Out[85]: 
   year  income
0  2015   20000
1  2016   20000
2  2017   34000

После комментария OP:

In [239]: res = df.groupby('year', as_index=False)['income'].median()
In [259]: d = res.set_index('year').to_dict()['income']

Затем вы можете запросить указанное выше dict d, чтобы получить среднее значение за определенный год, например:

In [268]: d.get(2015)
Out[268]: 20000

In [269]: d.get(2016) 
Out[269]: 20000

In [270]: d.get(2017) 
Out[270]: 34000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...