pandas.DataFrame.groupby
には、引数group_keys
があります。これは、グループキーがデータフレームサブセットにどのように含まれているかに関するものです。pandas.groupbyのgroup_keys引数は実際に何をしますか?
group_keys:ブール、デフォルトはTrue
適用呼び出し、しかし作品
を識別するためのインデックスにグループキーを追加し、私の文書によると、 group_keys
が実際の違いをもたらす例は実際には見つかりません:
import pandas as pd
df = pd.DataFrame([[0, 1, 3],
[3, 1, 1],
[3, 0, 0],
[2, 3, 3],
[2, 1, 0]], columns=list('xyz'))
gby = df.groupby('x')
gby_k = df.groupby('x', group_keys=False)
それはapply
の出力に差がありません:
ap = gby.apply(pd.DataFrame.sum)
# x y z
# x
# 0 0 1 3
# 2 4 4 3
# 3 6 1 1
ap_k = gby_k.apply(pd.DataFrame.sum)
# x y z
# x
# 0 0 1 3
# 2 4 4 3
# 3 6 1 1
そして、あなたが行くようにあなたがグループ化されたサブセットをプリントアウトしても、結果はまだ同じです:
def printer_func(x):
print(x)
return x
print('gby')
print('--------------')
gby.apply(printer_func)
print('--------------')
print('gby_k')
print('--------------')
gby_k.apply(printer_func)
print('--------------')
# gby
# --------------
# x y z
# 0 0 1 3
# x y z
# 0 0 1 3
# x y z
# 3 2 3 3
# 4 2 1 0
# x y z
# 1 3 1 1
# 2 3 0 0
# --------------
# gby_k
# --------------
# x y z
# 0 0 1 3
# x y z
# 0 0 1 3
# x y z
# 3 2 3 3
# 4 2 1 0
# x y z
# 1 3 1 1
# 2 3 0 0
# --------------
デフォルトの引数が実際にはTrue
である可能性を考えましたが、group_keys
を明示的にFalse
に切り替えることで違いはありません。この議論はまさに何を意味するのでしょうか?
(pandas
バージョン0.18.1
上のファイル名を指定して実行)
編集: 私はgroup_keys
がthis answerに基づいて、動作を変更する方法を見つけた:
import pandas as pd
import numpy as np
row_idx = pd.MultiIndex.from_product(((0, 1), (2, 3, 4)))
d = pd.DataFrame([[4, 3], [1, 3], [1, 1], [2, 4], [0, 1], [4, 2]], index=row_idx)
df_n = d.groupby(level=0).apply(lambda x: x.nlargest(2, [0]))
# 0 1
# 0 0 2 4 3
# 3 1 3
# 1 1 4 4 2
# 2 2 4
df_k = d.groupby(level=0, group_keys=False).apply(lambda x: x.nlargest(2, [0]))
# 0 1
# 0 2 4 3
# 3 1 3
# 1 4 4 2
# 2 2 4
しかし、私は明らかにまだいませんよgroup_keys
はとなりますので、理解できる原則はです。この動作は、@piRSquaredの回答に基づいて直感的に見えません。
ありがとうございます!これは 'group_keys'の機能の最大限ですか?私は 'group_keys'が何かをする別の例で質問を編集しましたが、あなたがここで述べた' group_keys'の意味とは一貫していないようです。 – Paul