正規化されたデータフレームを見つけると、グループ化に使用されているカラムが削除され、後続のgroupby操作では使用できなくなります。例えば(編集:更新):パンダでtransformを使用してgroupbyを使用するときに 'key'カラムを保持
df = pd.DataFrame({'a':[1, 1 , 2, 3, 2, 3], 'b':[0, 1, 2, 3, 4, 5]})
a b
0 1 0
1 1 1
2 2 2
3 3 3
4 2 4
5 3 5
df.groupby('a').transform(lambda x: x)
b
0 0
1 1
2 2
3 3
4 4
5 5
さて、グループのほとんどの操作で「行方不明」の列が新しいインデックス(当時reset_index
を使用して調整、またはas_index=False
を設定することができます)となりますが、使用している場合は、それを変換します元のインデックスとキーなしで新しいデータセットを残して、ただ消えます。
編集:ここで私は関数は、この問題を回避するために表示されたインデックスに基づいて分割するために使用されるpandas docsからの例では
df.groupby('a').transform(lambda x: x+1).groupby('a').mean()
KeyError 'a'
を行うことができるようにしたいものの1つのライナーです完全に。あるいは、groupby/transformの後にカラムを追加するだけでも可能ですが、確かに良い方法がありますか?
更新: reset_index/as_indexは、各グループを1つの行に減らす機能のみを対象としています。いくつかのオプションがあるようですが、答えは
たいと思いますが、それをだまさ: 'df.assign( new = df.groupby( 'a')。transform( 'sum')) '? – MaxU
全体的な問題は、 'a'を何回かグループ化する必要があるということです。 – user2699
@MaxU、これは可能なアプローチのようですが、この場合は複数の列に変換を適用します。 – user2699