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

Pandas DataFrame列重命名失败问题及原因排查问询

问题原因与解决方案

问题根源

你用agg({'Views(in millions)': ['mean']})生成的DataFrame是多级列名(MultiIndex),合并后的目标列名是元组类型:('Views(in millions)', 'mean'),而不是你以为的字符串'(Views(in millions), mean)'。用字符串作为键去匹配元组列名,Pandas找不到对应列,所以重命名操作完全没生效。

三种解决办法

1. 从源头避免多级列(推荐)

在agg的时候直接指定聚合后的列名,不用列表形式,这样不会生成多级列:

avg_views_per_month = video_data.groupby('Month', as_index=False).agg(
    Views=('Views(in millions)', 'mean')  # 直接定义列名为Views
)

这样生成的avg_views_per_month列名就是Month和Views,后续合并后无需额外重命名。

2. 用元组作为键重命名

如果已经生成了多级列,直接用元组匹配列名:

avg_views_per_video_by_month.rename(
    columns={('Views(in millions)', 'mean'): 'Views'},
    inplace=True
)

这样就能精准匹配到目标列,完成重命名。

3. 扁平化多级列名

把多级列名转成普通字符串,之后再用字符串重命名:

# 把多级列名转成拼接后的字符串
avg_views_per_video_by_month.columns = ['_'.join(col).strip() for col in avg_views_per_video_by_month.columns]
# 现在可以用字符串重命名了
avg_views_per_video_by_month.rename(
    columns={'Views(in millions)_mean': 'Views'},
    inplace=True
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 01:51:24