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中使用的密钥将成为新数据帧中的索引时.
将列设置为索引时获得的好处是:
速度.根据索引列过滤值时,例如.groupby()
,由于索引列的散列会更快.它不必遍历整个df.loc['bk1']
列来查找books
.它只会计算哈希值'bk1'
并在1中找到它.
缓解.当'bk1'
你可以使用这种as_index=True
更短更快的语法,而不是df.loc['bk1']
更长,更慢.
使用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时颜色不再是索引