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

Pandas:如何从DatetimeIndex类型的DataFrame中提取值?

解决DatetimeIndex行列的DataFrame值提取问题

你的DataFrame行和列均为DatetimeIndex,其元素是Timestamp对象,直接用字符串索引会因类型不匹配报错,以下是正确的提取方法:

方法1:将字符串转为Timestamp匹配索引

把要索引的字符串转为Timestamp类型,与索引完全匹配:

import pandas as pd

# 提取单个值:行2018年1月末,列2018年2月末
data.loc[pd.to_datetime('2018-01'), pd.to_datetime('2018-02')]

# 提取多行多列:行2018年1-2月末,列2018年1-3月末
data.loc[
    [pd.to_datetime('2018-01'), pd.to_datetime('2018-02')],
    [pd.to_datetime('2018-01'), pd.to_datetime('2018-03')]
]

方法2:利用DatetimeIndex的部分字符串匹配

DatetimeIndex支持年份、月份等部分字符串索引,Pandas会自动匹配对应时间点:

# 提取2018年1月行、2018年2月列
data.loc['2018-01', '2018-02']

# 提取2018年1-2月的所有行,2018年1-3月的所有列(切片形式)
data.loc['2018-01':'2018-02', '2018-01':'2018-03']

方法3:直接使用Timestamp对象索引

若明确知道索引的具体时间戳(比如你的行索引是2018-01-31、2018-02-28),可直接用Timestamp对象:

from pandas import Timestamp
data.loc[Timestamp('2018-01-31'), Timestamp('2018-02-28')]

错误原因说明

之前的报错多因索引类型不匹配:

  • 直接传入字符串/字符串列表时,与DatetimeIndex的Timestamp元素类型不兼容
  • 使用data.loc['2018-01', ['2018-02']]时,列参数是字符串列表,需转为Timestamp列表即可修复:data.loc['2018-01', [pd.to_datetime('2018-02')]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 04:05:28