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

如何用Python基于现有数据集构建年份时间向量?

问题:构建年份时间向量遇到的错误与异常输出

我正尝试基于现有数据集构建年份时间向量,先后尝试两段代码均出现问题:

第一段代码及报错

df = pd.read_csv("temp.csv")
date = df['DATE'].apply(lambda x : str(x)[:4])
time_vector = np.arange(date.min(), date.max() + 1)

报错信息:can only concatenate str (not "int") to str

第二段代码及异常输出

df = pd.read_csv("temp.csv")
date = df['DATE'].apply(lambda x : str(x)[:4])
df['DATE'] = pd.to_datetime(df['DATE'])  # Ensure 'DATE' column is in datetime format
time_vector = np.arange(df['DATE'].min().year, df['DATE'].max().year + 1)

输出结果:仅返回[1970]


解决建议

1. 修复日期解析问题(针对[1970]异常)

输出[1970]是因为pd.to_datetime无法正确解析你的日期格式,默认返回Unix纪元起始年。解决步骤:

  • 检查temp.csv中DATE列的实际格式(如YYYY-MM-DD、MM/DD/YYYY、DD-MM-YYYY等)
  • 给pd.to_datetime指定format参数强制匹配格式,示例:
    # 假设日期格式是YYYY-MM-DD,其他格式替换对应占位符
    df['DATE'] = pd.to_datetime(df['DATE'], format='%Y-%m-%d')
    
  • 用df['DATE'].isna().sum()检查是否存在解析失败的空值,若有需清理或修正这些异常数据

2. 修正第一段代码的类型错误

第一段报错是因为提取的年份是字符串类型,而np.arange需要整数输入。直接将提取的年份转为整数即可:

df = pd.read_csv("temp.csv")
date_years = df['DATE'].apply(lambda x: int(str(x)[:4]))
time_vector = np.arange(date_years.min(), date_years.max() + 1)

注意:这种方法依赖日期字符串前四位为有效年份,可靠性低于datetime解析方式。

3. 完整可靠的实现方案

推荐优先使用datetime类型处理日期,流程如下:

import pandas as pd
import numpy as np

# 读取数据并解析日期(指定正确格式)
df = pd.read_csv("temp.csv")
df['DATE'] = pd.to_datetime(df['DATE'], format='%Y-%m-%d', errors='coerce')

# 过滤解析失败的行(根据业务需求选择保留或处理)
df = df.dropna(subset=['DATE'])

# 提取年份范围并生成时间向量
min_year = df['DATE'].dt.year.min()
max_year = df['DATE'].dt.year.max()
time_vector = np.arange(min_year, max_year + 1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 13:52:38