Skip to main content
 首页 » 编程设计

python之按列分组并将多个聚合作为数据框返回

2025年05月04日10rubylouvre

我有一个包含多列的 csv。 例如,这是文件的标题和前两行:

ACC;SYM;SumRealPNL;Count;MinAVG;PerLotPNL;SumOneLotPNL;ProfitOnly;ProfitOnlyCount;ProfitOnlyMinAVG;LossOnly;LossOnlyCount;LossOnlyMinAVG;Period;-;P;Q;R;S;Total;U;AS;W;YEAH;Y 
31942;EURUSD;4.593,00;17;730;336,47;5.720,00;5.720,00;17;730;0,00;0;0;4;;1;2;0;1;4;A;31942EURUSD1;12;16;18 
34887;XAUUSD;16.150,00;7;276;588,43;4.119,00;4.119,00;7;276;0,00;0;0;4;;1;2;0;1;4;A;34887XAUUSD1;12;16;18 

我将 csv 文件加载到数据框:

df = pd.read_csv('aaaa.csv', header=0, sep=';') 

我按 AS 列对数据框进行了分组:

byAS = df.groupby('AS') 

现在我想使用 DataFrameGroupBy 对象 (byAS) 创建一个包含以下列的新数据框:

  • AS 专栏
  • ACC 列的第一个值
  • U 列的第一个值
  • PerLotPNL 列的平均值
  • SumOneLotPNL 列的总和
  • Y 列的总和

我该怎么做?

请您参考如下方法:

一旦你有了数据框 df 并在 AS 列上分组,就像你在帖子中已有的那样,你可以使用 agg函数以获得所需的输出。

byAS = df.groupby('AS') 
 
result = byAS.agg({'ACC': 'first', 
                   'U': 'first',  
                   'PerLotPNL': np.mean, 
                   'SumOneLotPNL': np.sum, 
                   'Y': np.sum}).reset_index(inplace=True)