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

Pandas中Day列无法重命名求助:是否因该列为索引所致?

问题原因及解决方法

你的猜测完全正确:"Day"是DataFrame的多级索引成员,而非普通列,所以df.rename(columns=...)无法修改它的名称——这个方法只作用于列,不作用于索引。

解决方法

方法1:将索引转为列后重命名(适合需要把Day作为普通列的场景)

先把索引转换为普通列,重命名后可选择是否重新设置为索引:

import pandas as pd
import numpy as np

# Load the excel file into a dataframe
df = pd.read_excel("Marginal CPA data - NOV.xlsx")

# Delete the bottom row
df = df[:-1]

# Filter the column labeled "Campaign Type (Search ACQ) - ONC" to keep only rows with value "NonBrand"
df = df[df["Campaign Type (Search ACQ) - ONC"] == "NonBrand"]

# Make a pivot table
pivot_table = pd.pivot_table(df, values=["Media Cost", "CAFE Approvals"],
                              index=["Campaign Type (Search ACQ) - ONC", "Product (ACQ Search) - ONC", "Day"],
                              columns=["CDJ"], aggfunc="sum")

df_pivot = pivot_table.fillna(value=0)

# Reset the column index to a single level
df_pivot.columns = ["_".join(col) for col in df_pivot.columns]

# 重置索引,将多级索引转为普通列
df_pivot = df_pivot.reset_index()

# 现在可以正常重命名Day列为Date
df_pivot = df_pivot.rename(columns={"Media Cost_CPA": "CPA Spend", "Media Cost_Non CPA (CDJ)": "CDJ Spend",
                                     "CAFE Approvals_CPA": "CPA Approvals", "CAFE Approvals_Non CPA (CDJ)": "CDJ Approvals",
                                    "Day": "Date"})

# (可选)如果需要将Date重新设为索引,执行以下代码
# df_pivot = df_pivot.set_index(["Campaign Type (Search ACQ) - ONC", "Product (ACQ Search) - ONC", "Date"])

方法2:直接重命名索引级别(适合保持Day为索引的场景)

无需转换列,直接修改索引的级别名称,更高效:

import pandas as pd
import numpy as np

# Load the excel file into a dataframe
df = pd.read_excel("Marginal CPA data - NOV.xlsx")

# Delete the bottom row
df = df[:-1]

# Filter the column labeled "Campaign Type (Search ACQ) - ONC" to keep only rows with value "NonBrand"
df = df[df["Campaign Type (Search ACQ) - ONC"] == "NonBrand"]

# Make a pivot table
pivot_table = pd.pivot_table(df, values=["Media Cost", "CAFE Approvals"],
                              index=["Campaign Type (Search ACQ) - ONC", "Product (ACQ Search) - ONC", "Day"],
                              columns=["CDJ"], aggfunc="sum")

df_pivot = pivot_table.fillna(value=0)

# Reset the column index to a single level
df_pivot.columns = ["_".join(col) for col in df_pivot.columns]

# 重命名列
df_pivot = df_pivot.rename(columns={"Media Cost_CPA": "CPA Spend", "Media Cost_Non CPA (CDJ)": "CDJ Spend",
                                     "CAFE Approvals_CPA": "CPA Approvals", "CAFE Approvals_Non CPA (CDJ)": "CDJ Approvals"})

# 直接修改索引的第三个级别名称(索引从0开始,Day是第3个级别)
df_pivot.index.names = ["Campaign Type (Search ACQ) - ONC", "Product (ACQ Search) - ONC", "Date"]

未处理数据样本

Campaign Type (Search ACQ) - ONCProduct (ACQ Search) - ONCCDJDayMedia CostCAFE Approvals
NonBrandConsumerCPA11 Jan 202329019.7741594
NonBrandConsumerNon CPA (CDJ)17 Jan 202324640.3644886
NonBrandConsumerNon CPA (CDJ)12 Jan 202323627.7825678
NonBrandStudentCPA17 Jan 202329863.95447152
NonBrandMilesCPA23 Jan 2023380.941
NonBrandMilesCPA07 Jan 20231786.515
NonBrandConsumerCPA19 Jan 202326745.8170564
NonBrandSecuredCPA20 Jan 20231551.3519
NonBrandConsumerNon CPA (CDJ)02 Feb 202341185.1122566

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 22:55:18