Python Pandas: сохраняется ли порядок при использовании groupby () и agg ()?
Я часто бывал в употреблении пандagg()
функция для запуска сводной статистики по каждому столбцу data.frame. Например, вот как вы могли бы получить среднее и стандартное отклонение:
df = pd.DataFrame({'A': ['group1', 'group1', 'group2', 'group2', 'group3', 'group3'],
'B': [10, 12, 10, 25, 10, 12],
'C': [100, 102, 100, 250, 100, 102]})
>>> df
[output]
A B C
0 group1 10 100
1 group1 12 102
2 group2 10 100
3 group2 25 250
4 group3 10 100
5 group3 12 102
В обоих случаях порядок отправки отдельных строк в функцию agg не имеет значения. Но рассмотрим следующий пример, который:
df.groupby('A').agg([np.mean, lambda x: x.iloc[1] ])
[output]
mean <lambda> mean <lambda>
A
group1 11.0 12 101 102
group2 17.5 25 175 250
group3 11.0 12 101 102
В этом случае лямбда-функция функционирует как положено, выводя второй ряд в каждой группе. Тем не менее, я не смог найти в документации для панд ничего, что подразумевало бы, что это гарантированно верно во всех случаях. Я хочу использоватьagg()
наряду со средневзвешенной функцией, поэтому я хочу быть уверенным, что строки, входящие в функцию, будут в том же порядке, в котором они отображаются в исходном фрейме данных.
Кто-нибудь знает, в идеале через где-нибудь в исходном коде документов или панд, гарантированно ли это так?