this questionに基づいています。Groupby + Applyは不要なマルチインデックスを生成します
df = pandas.DataFrame([[2001, "Jack", 77], [2005, "Jack", 44], [2001, "Jill", 93]],columns=['Year','Name','Value']) Year Name Value 0 2001 Jack 77 1 2005 Jack 44 2 2001 Jill 93
それぞれユニークな名前のために、私は最大の 年の値を持つ行を維持したいと思います。最善のアプローチ
df.groupby('Name', as_index=False)\ .apply(lambda x: x.sort_values('Value').head(1)) Year Name Value 0 0 2001 Jack 44 1 2 2001 Jill 93
ないが、私はもっと興味:上記の例では、私は
groupby
+(apply
)でこの質問を解決しようとしたテーブルYear Name Value 0 2005 Jack 44 1 2001 Jill 93
を取得したいと思い何が起こっているのか、そしてなぜそれが起こったのか。結果は次のようになりますMultiIndex
を持っている:私は回避策を探していないよ
MultiIndex(levels=[[0, 1], [0, 2]],
labels=[[0, 1], [0, 1]])
。私は実際になぜこれが起きているのか、私のアプローチを変えずにそれを防ぐ方法を知りたいと思っています。
'df.groupby([ '名前'])[[ '年'、 '値']]最大を()。 .reset_index() '? –
@StefanoPotter実際には、私の最初の答えが誤解を招く場合は、最大の行、謝罪を取り除くために探しています。 –
あなたがapplyを使用し、データの長さがどのように開始されたかとは異なるときはいつでも、pandasはインデックス内のグループ化キーを使用します。それ以外の場合、グループ化キーを使用しないように指定すると、pandasはデータをまとめてグルーピングします。 as indexがfalseに等しいと指定した場合、pandasはグループ化キーの因数分解バージョンを使用します。 – piRSquared