ホームページ >バックエンド開発 >Python チュートリアル >df.groupby().transform() を使用してグループ化されたデータフレームを効果的に結合する方法
Groupby データフレームと df.groupby().transform() の結合
パンダ データフレームを扱う場合、多くの場合、次の操作を実行する必要があります。値のグループ化や統計の計算など、データのサブセット。ただし、これらの操作の結果を結合して元のデータフレームに戻すのは面倒な場合があります。
この課題に対処するには、次のシナリオを検討してください。
問題: 2 つの列「c」と「type」を持つデータフレームがあります。目標は、「c」ごとに「type」の値をカウントし、「c」のサイズでデータフレームに列を追加することです。
アプローチ 1 (マップの使用):
1 つのアプローチは、シリーズ内の各値に関数を適用する、map() 関数を使用することです。この場合、「c」のサイズをデータフレーム内の対応する「c」値にマッピングできます。
<code class="python">g = df.groupby('c')['type'].value_counts().reset_index(name='t') a = df.groupby('c').size().reset_index(name='size') a.index = a['c'] g['size'] = g['c'].map(a['size'])</code>
このアプローチは機能しますが、複数の手順と手動のインデックス調整が必要です。
アプローチ 2 (Transform を使用する):
より簡単な解決策は、pandas の transform() 関数を使用することです。これは、データフレームの各行に関数を適用し、次のように位置合わせされた Series を返します。オリジナルのインデックス。変換を使用して、'c' のサイズをデータフレームに直接追加できます:
<code class="python">g = df.groupby('c')['type'].value_counts().reset_index(name='t') g['size'] = df.groupby('c')['type'].transform('size')</code>
このアプローチにより、個別のサイズ計算とインデックスの位置合わせの必要がなくなり、より簡潔で効率的なソリューションが得られます。
以上がdf.groupby().transform() を使用してグループ化されたデータフレームを効果的に結合する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。