パンダのgroupbyのas_indexとは何ですか?&「as_index = False」と「reset_index()」の違い

見てください:

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() が新しいデータフレームのインデックスになるとき。

列をインデックスとして設定すると得られる利点は次のとおりです。

  1. 速度。 インデックス列に基づいて値をフィルタリングする場合。 df.loc['bk1']、インデックス列のハッシュにより高速になります。books を見つけるために列 全体をトラバースする必要はありません 'bk1'のハッシュ値を計算 'bk1' し、1回で見つけます。

  2. 簡易。 とき 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 

おすすめ

転載: blog.csdn.net/weixin_51267929/article/details/114242425