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

如何将pd.read_excel读取的二维表转为带datetime索引的pandas DataFrame

把Excel读取的二维表转成Datetime索引的Pandas DataFrame

嘿,这事儿不难,我分两种常见情况给你讲清楚,你对着自己的Excel表选对应的方法就行:

情况1:Excel里已经有完整的日期列(比如"1948-01-01"格式)

如果你的表本身就有一列是日期格式(不管是Excel自带的日期类型,还是字符串格式的日期),那读取的时候直接一步到位最省事:

# 读取时直接指定解析日期列,并把它设为索引
df = pd.read_excel('你的文件路径.xlsx', parse_dates=['日期列的名称'], index_col='日期列的名称')

要是你已经先把表读进data_xlsx了,也可以事后调整:

# 先把日期列转成datetime类型
data_xlsx['日期列的名称'] = pd.to_datetime(data_xlsx['日期列的名称'])
# 再把它设为索引
data_xlsx.set_index('日期列的名称', inplace=True)

情况2:日期是分成「年份」「月份」两列存储的

很多老表格会把年、月分开成两列(比如一列是1948,一列是1),这时候需要先把它们组合成完整的日期:

# 先读取原始数据
data_xlsx = pd.read_excel('你的文件路径.xlsx')
# 组合年、月,默认把日期设为每月1号(符合你给出的示例格式)
data_xlsx['日期'] = pd.to_datetime(data_xlsx[['年份列名', '月份列名']].assign(日=1))
# 设置索引
data_xlsx.set_index('日期', inplace=True)
# 要是你只需要数值列(比如示例里的3.4、3.8这些),可以单独提取出来
final_df = data_xlsx[['数值列的名称']]

小提示:处理奇怪的日期格式

如果你的日期列是特殊格式(比如"1948年1月"、"Jan-1948"),可以用pd.to_datetime的format参数指定解析规则,避免出错:

# 比如解析"1948年1月"这种格式
data_xlsx['日期'] = pd.to_datetime(data_xlsx['日期列'], format='%Y年%m月')

最后你可以用df.index.dtype检查一下索引是不是datetime64[ns]类型,或者用df.head()看看输出是不是你想要的样子~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:55:17