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

Python代码问题:月份显示为1-12数字而非月份名称

解决月份列显示数字而非名称的问题

你的问题出在DataFrame的列名初始设置为月份数字,后续循环仅修改了单元格内容,并未更改列名,所以表头始终显示1-12的数字。以下是修正方案:

核心修改点

直接将df1的列名替换为月份缩写或全称,无需多余的单元格赋值循环(你原代码中两次给单元格写月份名称的循环可以删除,因为最后会被收益率覆盖)。

修正后的完整代码(英文月份缩写)

import pandas as pd
from datetime import datetime

start_date = '2023-01-01'
end_date = '2023-12-31'

dates_2023 = pd.date_range(start=start_date, end=end_date)

# 生成英文月份缩写作为列名(如Jan、Feb)
month_names = [datetime(2023, num, 1).strftime('%b') for num in dates_2023.month.unique()]
df1 = pd.DataFrame(index=range(1, 32), columns=month_names)

# 保留你的分组计算逻辑
df_grouped = df.groupby([df.index.month, df.index.day]).mean()

for index, row in df_grouped.iterrows():
    month_num, day = index
    # 根据月份数字匹配对应的缩写列名
    month_col = datetime(2023, month_num, 1).strftime('%b')
    df1.loc[day, month_col] = row['Daily_returns']

df1

补充:如果需要中文月份名称

把生成列名的部分改成中文映射即可:

import pandas as pd

start_date = '2023-01-01'
end_date = '2023-12-31'

dates_2023 = pd.date_range(start=start_date, end=end_date)

# 中文月份名称列表
cn_month_names = ['一月', '二月', '三月', '四月', '五月', '六月', 
                 '七月', '八月', '九月', '十月', '十一月', '十二月']
# 按月份数字顺序获取对应中文名称
month_names = [cn_month_names[num-1] for num in dates_2023.month.unique()]
df1 = pd.DataFrame(index=range(1, 32), columns=month_names)

# 分组循环中匹配中文列名
df_grouped = df.groupby([df.index.month, df.index.day]).mean()
for index, row in df_grouped.iterrows():
    month_num, day = index
    month_col = cn_month_names[month_num-1]
    df1.loc[day, month_col] = row['Daily_returns']

df1

这样你的DataFrame表头就会显示月份名称而非数字了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 14:02:18