[英]Efficient way to create a new column that is the sum of unique values grouped by another column?
我有一個具有名稱和大小列的數據框。 我需要創建一個新列(size_total),它是按名稱列分組的所有唯一大小值的總和。
df = pd.DataFrame([
{'sp': 'A', 'size': 25},
{'sp': 'B', 'size': 26},
{'sp': 'C', 'size': 27},
{'sp': 'A', 'size': 25},
{'sp': 'B', 'size': 42},
{'sp': 'C', 'size': 27},
{'sp': 'A', 'size': 25},
{'sp': 'B', 'size': 32},
{'sp': 'C', 'size': 33}])
df['size_total'] = df['sp'].map(df[['sp', 'size']].drop_duplicates(keep='first').groupby('sp').sum()['size'])
有沒有更有效的方法來做到這一點?
如果首先將“sp”設置為索引,則可以通過使pandas進行映射來減少原始解決方案中約30%的時間。
df.set_index(df['sp'].values, inplace=True)
df['size_total'] = (
df.drop_duplicates(['sp', 'size']).groupby('sp')['size'].sum(level=0))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.