Что такое функция as_index
в groupby
в groupby
?
Что такое as_index в группе в пандах?
Ответ 1
print()
ваш друг, когда вы ничего не понимаете. Это рассеивает сомнения много раз.
Взглянуть:
import pandas as pd
df = pd.DataFrame(data={'books':['bk1','bk1','bk1','bk2','bk2','bk3'], 'price': [12,12,12,15,15,17]})
print(df)
print(df.groupby('books', as_index=True).sum())
print(df.groupby('books', as_index=False).sum())
Выход:
books price
0 bk1 12
1 bk1 12
2 bk1 12
3 bk2 15
4 bk2 15
5 bk3 17
price
books
bk1 36
bk2 30
bk3 17
books price
0 bk1 36
1 bk2 30
2 bk3 17
Когда as_index=True
ключи, которые вы используете в groupby()
, станут индексом в новом фрейме данных.
Преимущества, которые вы получаете, устанавливая столбец в качестве индекса:
-
Скорость. Когда вы фильтруете значения на основе столбца индекса, например.
df.loc['bk1']
, это было бы быстрее из-за хэширования столбца индекса. Не нужно проходить весь столбецbooks
чтобы найти'bk1'
. Он просто вычислит значение хеша'bk1'
и найдет его за один раз. -
Легкость. Когда
as_index=True
вы можете использовать этот синтаксисdf.loc['bk1']
который короче и быстрее, в отличие отdf.loc[df.books=='bk1']
который длиннее и медленнее.
Ответ 2
При использовании группы по функции as_index может быть установлено значение true или false в зависимости от того, хотите ли вы, чтобы столбец, с которым вы группировались, являлся индексом вывода.
import pandas as pd
table_r = pd.DataFrame({
'colors': ['orange', 'red', 'orange', 'red'],
'price': [1000, 2000, 3000, 4000],
'quantity': [500, 3000, 3000, 4000],
})
new_group = table_r.groupby('colors',as_index=True).count().sort('price', ascending=False)
print new_group
выход:
price quantity
colors
orange 2 2
red 2 2
Теперь с as_index = False
colors price quantity
0 orange 2 2
1 red 2 2
Обратите внимание, что цвета больше не являются индексом при изменении as_index = False