見てください:
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'
し、1回で見つけます。 -
簡易。 とき
as_index=True
、あなたはこの構文を使用することができますdf.loc['bk1']
とは対照的に、短く、より高速でdf.loc[df.books=='bk1']
より長く、より低速であるが。
加えて、
11
1
これら2によって実行される機能の違いは何か知りたかっただけです。
データ:
import pandas as pd
df = pd.DataFrame({"ID":["A","B","A","C","A","A","C","B"], "value":[1,2,4,3,6,7,3,4]})
as_index = False:
df_group1 = df.groupby("ID").sum().reset_index()
reset_index():
df_group2 = df.groupby("ID", as_index=False).sum()
どちらもまったく同じ出力を提供します。
ID value
0 A 18
1 B 6
2 C 6
誰かが違いと同じことを説明する例を教えてもらえますか?
いいえ、OPのデータフレームにはデフォルトの0,1,2以外の明示的なインデックスがないため、この特定のケースでのみ同じです 。 したがって、それを保持したり、リセット/ドロップしたりしても違いはありません。 。データフレームに実際にインデックス(100、101、102など)がある場合、結果は同じではありません。- SMCI 17時09時9月23日'19