ホームページ >バックエンド開発 >Python チュートリアル >pandas groupby().sum() の結果を新しい列に追加するときに NaN 値を回避するにはどうすればよいですか?

pandas groupby().sum() の結果を新しい列に追加するときに NaN 値を回避するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-15 11:53:11904ブラウズ

How to Avoid NaN Values When Adding pandas groupby().sum() Results to a New Column?

pandas groupby().sum() の出力を新しい列に入力する方法

データを操作する場合、次のようになります。特定の計算の結果に基づいて DataFrame に新しい列を作成する場合に便利です。そのような計算の 1 つは、pandas の groupby() 関数と sum() 関数を使用して、列内の特定のグループの値の合計を求めることです。ただし、この合計を使用して新しい列を作成しようとすると、NaN 値が発生する可能性があります。

次のコードを検討してください。

df = pd.DataFrame({
    'Date' : ['2015-05-08', '2015-05-07', '2015-05-06', '2015-05-05', '2015-05-08', '2015-05-07', '2015-05-06', '2015-05-05'], 
    'Sym'  : ['aapl', 'aapl', 'aapl', 'aapl', 'aaww', 'aaww', 'aaww', 'aaww'], 
    'Data2': [11, 8, 10, 15, 110, 60, 100, 40],
    'Data3': [5, 8, 6, 1, 50, 100, 60, 120]
})

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

df['Data4'] = group

このコードを実行すると、次のような結果が得られることが予想されます。各日付の正しい計算値 (グループ変数に表示) が得られますが、代わりに、新しく作成された Data4 列に NaN 値が得られます。

これを解決するには問題がある場合は、transform 関数を使用する必要があります。この関数は、DataFrame に合わせたインデックスを持つ Series を返し、それを新しい列として追加できるようにします。修正されたコードは次のとおりです。

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

この変更により、目的の合計値を含む新しい Data4 列が正常に作成されます。

以上がpandas groupby().sum() の結果を新しい列に追加するときに NaN 値を回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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