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

如何在Pandas中通过指定日期索引DataFrame的列值?

问题描述

现有一个Pandas DataFrame,结构如下:

Open        High         Low       Close   Volume  Dividends  Stock Splits
Date
2013-01-07 00:00:00-05:00   71.951356   72.440875   71.877924   72.285858  1859400        0.0           0.0
2013-01-08 00:00:00-05:00   72.090030   72.514278   71.151782   71.535240  2173700        0.0           0.0
2013-01-09 00:00:00-05:00   71.926850   72.848777   71.779993   72.661125  2569200        0.0           0.0
...                               ...         ...         ...         ...      ...        ...           ...
2023-01-06 00:00:00-05:00  416.200012  428.540009  416.010010  426.470001  1042200        0.0           0.0

查看列名时,发现没有名为Date的列:

>>> for col in stock_df.columns:
...     print(col)
...
Open
High
Low
Close
Volume
Dividends
Stock Splits

实际Date是DataFrame的索引,而非普通列。需求是:根据%Y-%m-%d格式的日期,快速获取指定列(如Open)的值。

解决方案

1. 确认索引类型

先检查当前索引是否为DatetimeIndex(这是日期查询的前提):

print(type(stock_df.index))
# 正常输出应为 <class 'pandas.core.indexes.datetimes.DatetimeIndex'>

2. 统一时区处理

索引中的-05:00是时区信息,若要按无时区的%Y-%m-%d字符串查询,建议先去除时区:

# 移除时区信息,转为本地datetime
stock_df.index = stock_df.index.tz_localize(None)

3. 按日期查询指定列

单日期查询

直接使用loc传入%Y-%m-%d格式的字符串即可:

# 获取2013-01-07的Open值
open_price = stock_df.loc['2013-01-07', 'Open']
print(open_price)
# 输出:71.95135572116979

日期范围查询

如果需要批量查询某段日期的列值:

# 获取2013年1月7日至1月10日的Open列数据
open_prices = stock_df.loc['2013-01-07':'2013-01-10', 'Open']
print(open_prices)

带时区的精确匹配

如果保留时区信息,需将目标日期转为对应时区的datetime对象:

from datetime import datetime
import pytz

# 构造带时区的目标日期(-05:00对应America/New_York时区)
target_date = datetime.strptime('2013-01-07', '%Y-%m-%d').replace(tzinfo=pytz.timezone('America/New_York'))
open_price = stock_df.loc[target_date, 'Open']
print(open_price)

4. 优化大型DataFrame查询速度

对于大型数据集,确保索引已排序,可大幅提升查询效率:

# 检查索引是否递增排序
print(stock_df.index.is_monotonic_increasing)
# 若未排序,执行排序
if not stock_df.index.is_monotonic_increasing:
    stock_df = stock_df.sort_index()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 05:45:34