特定のパーティションに基づいて値を集計する最良の方法を探しています。
SUM(TotalCost) OVER(PARTITION BY ShopName) Earnings ( SQL server)
Pandasの以下の手順でこれを行うことができますが、存在するはずのネイティブアプローチを探しています
TempDF= DF.groupby(by=['ShopName'])['TotalCost'].sum()
TempDF= TempDF.reset_index()
NewDF=pd.merge(DF , TempDF, how='inner', on='ShopName')
お読みいただきありがとうございます。
pandas transform()メソッドを使用して、SQLの「OVER(partition by ...)」のようなグループ集約内で次のことができます。
import pandas as pd
import numpy as np
#create dataframe with sample data
df = pd.DataFrame({'group':['A','A','A','B','B','B'],'value':[1,2,3,4,5,6]})
#calculate AVG(value) OVER (PARTITION BY group)
df['mean_value'] = df.groupby('group').value.transform(np.mean)
df:
group value mean_value
A 1 2
A 2 2
A 3 2
B 4 5
B 5 5
B 6 5