You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用一行简洁代码按列合并两个Pandas聚合DataFrame?

问题描述

我正在使用Pandas进行Kaggle泰坦尼克号竞赛的数据分析。我有两个通过以下代码生成的聚合DataFrame:

train_df[['Parch', 'Survived']].groupby(['Parch'], as_index=False).count().rename(columns={'Survived':"Count"}).reset_index(drop=True)

train_df[['Parch', 'Survived']].groupby(['Parch'], as_index=False).mean().rename(columns={'Survived':"Surviving rate"}).reset_index(drop=True)

我尝试用以下代码按列合并它们,但觉得过于繁琐:

tmp_df = train_df[['Parch','Survived']].groupby(['Parch'], as_index=False).agg({"Survived": ["count","mean"]}).reset_index(drop=True)

tmp_df.columns = tmp_df.columns.droplevel()
tmp_df.columns = ["Parch", "Count", "Surviving rate"]

请问如何用一行简洁的代码按列合并这两个DataFrame?

简洁实现方案

可以利用Pandas的命名聚合语法(0.25+版本支持),直接在agg方法中指定自定义列名,一步完成聚合与合并:

tmp_df = train_df[['Parch', 'Survived']].groupby('Parch', as_index=False).agg(Count=('Survived', 'count'), Surviving_rate=('Survived', 'mean'))

核心优势

  • 无需处理多级列索引,生成的DataFrame直接是单级列结构,列名就是我们需要的Parch、Count、Surviving_rate。
  • 省略了后续重置索引、调整列名的额外步骤,一行代码完成所有需求。

内容的提问来源于stack exchange,提问作者Umgee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 17:56:05