Skip to main content
 首页 » 编程设计

python之Pandas Groupby : How to get the first string

2025年05月04日10haluo1

我有这个数据框:

dfexample = pd.DataFrame({'OID' : [7, 7, 7, 7], 
                      'Category' : ['Plumbing', 'Plumbing', 'Plumbing', 'Plumbing'], 
                      'Product_Type' : ['Accessory', 'Shower Accessories', 'Showers', 'Showers'], 
                      'Extended_Price' : [20.5, 12.12, 122.45, 225.98]}) 

我想按“OID”对这个数据框进行分组,并获取我的对象列(Category 和 Product_Type)的“第一个”字符串,所以在这种情况下 “管道” 和 “配件”。期望的输出:

[in]:dfgrouped 
 
[out]: 
OID       Category         Extended_Price     Product_Type 
7         Plumbing         381.05             Accessory   

现在,我将所有字符串连接在一起,并且不返回“第一个”字符串。

def f(x): 
return pd.Series(dict(Category = x['Category'].sum(), 
                     Extended_Price = x['Extended_Price'].sum(), 
                      Product_Type = x['Product_Type'].sum()  
                     )) 
dfexample.groupby('OID').apply(f) 

请您参考如下方法:

first groupby 方法返回每个组的第一个元素:

dfexample.groupby('OID').first() 

显然您还想对数字列求和,因此您需要使用 agg 指定对每一列使用哪个聚合:

dfexample.groupby('OID').agg({ 
    'Category': 'first', 
    'Product_Type': 'first', 
    'Extended_Price': 'sum' 
})