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

为Pandas中groupby size结果列设置自定义列名

问题描述

我有一个DataFrame,需要统计指定列的唯一项数量。在示例中,希望将groupby后size()生成的列命名为"NUM_CIK",请问为groupby结果列指定名称的最优方法是什么?

当前代码:

cik_groupby_cusip_occur = cik_groupby_cusip_occur.groupby(
    ['CUSIP'], sort=True)['CIK COMPANY'].size().sort_values(ascending=False)

示例输出:

CUSIP
594918104    4560
037833100    4457
023135106    4053
02079K305    3545
478160104    3472

期望输出:

CUSIP       NUM_CIK
594918104    4560
037833100    4457
023135106    4053
02079K305    3545
478160104    3472

解决方案

以下是几种高效的实现方式,可根据需求选择:

1. 使用reset_index()直接指定列名

适合需要将分组键(CUSIP)转为普通列的场景:

cik_groupby_cusip_occur = cik_groupby_cusip_occur.groupby(
    ['CUSIP'], sort=True)['CIK COMPANY'].size().reset_index(name='NUM_CIK').sort_values(by='NUM_CIK', ascending=False)

reset_index(name='NUM_CIK')一步完成两个操作:把CUSIP从索引转为普通列,同时将size()生成的计数列命名为NUM_CIK,最后按计数结果降序排序。

2. 使用agg()方法指定聚合列名

扩展性最强,适合后续需要添加更多聚合操作的场景:

cik_groupby_cusip_occur = cik_groupby_cusip_occur.groupby(
    ['CUSIP'], sort=True)['CIK COMPANY'].agg(NUM_CIK='size').sort_values(by='NUM_CIK', ascending=False)

agg(NUM_CIK='size')直接将size聚合的结果映射到指定列名,代码简洁且易扩展——如果之后需要同时统计最大值、平均值,只需在agg()中添加对应字段,比如agg(NUM_CIK='size', MAX_CIK='max')。

3. 使用rename()修改Series名称

适合需要保留分组键(CUSIP)作为索引的场景:

cik_groupby_cusip_occur = cik_groupby_cusip_occur.groupby(
    ['CUSIP'], sort=True)['CIK COMPANY'].size().rename('NUM_CIK').sort_values(ascending=False)

rename('NUM_CIK')直接修改size()生成的Series的名称,此时CUSIP仍作为索引,输出格式与期望一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 02:25:29