ホームページ >バックエンド開発 >Python チュートリアル >「transform()」を使用してパンダにグループ化された合計を含む新しい列を追加する方法

「transform()」を使用してパンダにグループ化された合計を含む新しい列を追加する方法

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-24 10:46:14865ブラウズ

How to Add a New Column with Grouped Summation in Pandas Using `transform()`?

Pandas でのグループ化された合計に基づいた新しい列の作成

問題ステートメント

値の合計に基づいて新しい列を作成しようとしたときpandas の groupby() を使用して日付でグループ化すると、NaN の結果が発生します。目的は、その日付に関連付けられた行数に関係なく、すべての日付の特定の値の合計を表示する列を追加することです。

解決策

これを達成するには、変換()関数を採用しています。行ごとに操作する apply() 関数とは異なり、transform() はグループ化されたデータに対して計算を実行し、元のデータフレームと一致する系列を返します。

df['Data4'] = df['Data3'].groupby(df['Date']).transform('sum')

ここで段階的に説明します。 :

  • df['Data3'].groupby(df['Date']): この行は 'Data3' をグループ化します。 'Date' による列。
  • transform('sum'): 'transform' 関数はグループ化されたオブジェクトに適用され、各日付グループの 'Data3' の合計を計算します。
  • 結果は元のデータフレームと整合した系列となり、「Data4」という名前の新しい列として追加できます。

例使用法

次のデータフレームを考えます:

         Date   Sym  Data2  Data3
0  2015-05-08  aapl     11      5
1  2015-05-07  aapl      8      8
2  2015-05-06  aapl     10      6
3  2015-05-05  aapl     15      1
4  2015-05-08  aaww    110     50
5  2015-05-07  aaww     60    100
6  2015-05-06  aaww    100     60
7  2015-05-05  aaww     40    120

transform() 関数を適用すると:

df['Data4'] = df['Data3'].groupby(df['Date']).transform('sum')

結果は次のようになります:

         Date   Sym  Data2  Data3  Data4
0  2015-05-08  aapl     11      5     55
1  2015-05-07  aapl      8      8    108
2  2015-05-06  aapl     10      6     66
3  2015-05-05  aapl     15      1    121
4  2015-05-08  aaww    110     50     55
5  2015-05-07  aaww     60    100    108
6  2015-05-06  aaww    100     60     66
7  2015-05-05  aaww     40    120    121

として出力から明らかなように、「Data4」列には、一意の各データの「Data3」の合計が保持されます。 「日付」の値。

以上が「transform()」を使用してパンダにグループ化された合計を含む新しい列を追加する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。