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 サイトの他の関連記事を参照してください。