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

如何在Pandas中无需指定列名提取datetime64类型列为Series

如何无需指定列名,将DataFrame中datetime64类型列以Series形式返回?

问题场景

先创建示例DataFrame:

import pandas as pd

# 创建日期范围
dates = pd.date_range('2015-01-25', periods=5, freq='W')

# 创建包含日期列和数值列的DataFrame
dataframe = pd.DataFrame({
    'Date': dates,
    'Value': [10, 20, 30, 40, 50]
})

当指定列名选取Date列时,会返回pandas.core.series.Series对象:

dataframe['Date'] = pd.to_datetime(dataframe['Date'])
print(dataframe['Date'])

但通过筛选datetime64[ns]类型列时,得到的是pandas.core.frame.DataFrame对象:

date_cols = dataframe.loc[:, dataframe.dtypes == 'datetime64[ns]']
print(date_cols)

现在需要实现:无需指定列名,直接将筛选出的datetime64类型列以Series形式返回。


解决方案

1. 仅存在一个datetime64类型列时

这是最常见的场景,直接用squeeze()方法将单列DataFrame转为Series即可:

date_series = dataframe.loc[:, dataframe.dtypes == 'datetime64[ns]'].squeeze()

或者通过提取筛选出的列名来获取Series:

# 获取datetime类型列的列名
datetime_col_name = dataframe.dtypes[dataframe.dtypes == 'datetime64[ns]'].index[0]
date_series = dataframe[datetime_col_name]

验证结果类型:

print(type(date_series))  # 输出:<class 'pandas.core.series.Series'>

2. 存在多个datetime64类型列时

如果DataFrame中有多个日期列,可以先获取所有datetime类型的列名,再按需转为Series:

# 获取所有datetime类型列的列名列表
datetime_col_names = dataframe.dtypes[dataframe.dtypes == 'datetime64[ns]'].index.tolist()

# 遍历每个列名,转为Series
for col_name in datetime_col_names:
    date_series = dataframe[col_name]
    # 在这里对每个Series进行后续处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 03:07:50