簡體   English   中英

創建新列的有效方法是按另一列分組的唯一值的總和?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM