什么是pandas中groupby的as_index?

Har*_*tha 18 python pandas

到底是什么功能as_indexgroupby的熊猫吗?

MYG*_*YGz 41

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())
Run Code Online (Sandbox Code Playgroud)

输出:

  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
Run Code Online (Sandbox Code Playgroud)

as_index=True您在groupby中使用的密钥将成为新数据帧中的索引时.

将列设置为索引时获得的好处是:

  1. 速度.根据索引列过滤值时,例如.groupby(),由于索引列的散列会更快.它不必遍历整个df.loc['bk1']列来查找books.它只会计算哈希值'bk1'并在1中找到它.

  2. 缓解.'bk1'你可以使用这种as_index=True更短更快的语法,而不是df.loc['bk1']更长,更慢.

  • 除了易于选择之外,`df.loc ['bk1']`也比布尔索引更快. (5认同)
  • Thanks a lot. I dint know about print. (2认同)
  • @ayhan是的.当它被索引时,它不必遍历整个书籍栏目以找到"bk1".它只计算'bk1'的哈希值并在1中找到它.谢谢你提出这一点. (2认同)

Mar*_* vT 5

使用group by函数时,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
Run Code Online (Sandbox Code Playgroud)

输出:

        price  quantity
colors                 
orange      2         2
red         2         2
Run Code Online (Sandbox Code Playgroud)

现在使用as_index = False

   colors  price  quantity
0  orange      2         2
1     red      2         2
Run Code Online (Sandbox Code Playgroud)

请注意当我们更改as_index = False时颜色不再是索引