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

NumPy从多CSV文件提取日期列时出现切片无效TypeError问题求助

解决方案

错误原因

pandas DataFrame 不支持直接使用[行切片, 列索引]的numpy风格索引语法,这类按位置取值的操作需要搭配.iloc位置索引器才能生效,这是你触发TypeError的直接原因。
另外补充一个容易踩的坑:pd.read_csv默认会把文件首行作为表头读取为DataFrame的列名,你加载后的数据本身就已经跳过了表头行,不需要额外加1:的行切片,否则会丢失第一行有效数据。

修改后代码

import pandas as pd
import numpy as np

def import_dates():
    # 读取文件时直接指定解析第二列为日期类型,后续不需要额外转格式
    CA = pd.read_csv('CA.csv', parse_dates=[1])
    NY = pd.read_csv('NY.csv', parse_dates=[1])
    MN = pd.read_csv('MN.csv', parse_dates=[1])
    TN = pd.read_csv('TN.csv', parse_dates=[1])
    FL = pd.read_csv('FL.csv', parse_dates=[1])

    # 用iloc按位置取第二列(索引为1)的所有行,转numpy数组
    CA_time = CA.iloc[:, 1].to_numpy()
    NY_time = NY.iloc[:, 1].to_numpy()
    MN_time = MN.iloc[:, 1].to_numpy()
    TN_time = TN.iloc[:, 1].to_numpy()
    FL_time = FL.iloc[:, 1].to_numpy()

    # 按列拼接为(单文件数据行数,5)的目标数组
    date_series = np.column_stack([CA_time, NY_time, MN_time, TN_time, FL_time])
    return date_series

可选简化写法

可以用循环批量处理文件,减少重复代码:

def import_dates():
    states = ['CA', 'NY', 'MN', 'TN', 'FL']
    date_cols = []
    for state in states:
        df = pd.read_csv(f'{state}.csv', parse_dates=[1])
        date_cols.append(df.iloc[:, 1].to_numpy())
    return np.column_stack(date_cols)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 00:12:00