加载含日期字符串与整数列的TXT文件遇问题,求简便处理方法
解决方案:加载含日期和数值的文本文件
我来帮你搞定这个问题!你遇到的情况其实很典型——NumPy默认会把所有数据当成数值类型解析,所以碰到日期字符串就报错;而Pandas没正确识别分隔符的话,就会把整行内容塞进一列里。下面给你两种简单直接的解决办法:
方法一:用NumPy加载并拆分数据
因为你的文件包含字符串(日期)和整数两种类型,不能用默认的float解析,得指定结构化数据类型来分别处理两列:
假设你的文本文件每行是用空格分隔的(比如 12/31/19 500 这种格式),可以这么写代码:
import numpy as np # 定义结构化dtype:第一列是字符串(长度10足够存日期),第二列是整数 data = np.loadtxt('your_file.txt', dtype=[('date', 'U10'), ('value', int)]) # 提取成独立的数组 dates = data['date'] values = data['value']
这样dates就是存所有日期字符串的数组,values是对应的整数数组,完美拆分!
方法二:用Pandas加载并拆分数据
你之前用Pandas没成功分隔,大概率是没指定正确的分隔符。比如如果文件是用空格(或多个连续空格)分隔的,一定要加上sep='\s+'参数;如果是逗号分隔就用sep=','。
示例代码如下:
import pandas as pd # 读取文件:指定分隔符,自定义列名(如果你的文件第一行就是表头,去掉header=None和names参数即可) df = pd.read_csv('your_file.txt', sep='\s+', header=None, names=['date', 'value']) # 转成你需要的列表或NumPy数组 dates_list = df['date'].tolist() # 日期列表 values_array = df['value'].to_numpy() # 数值数组
如果你的文件本身第一行就是date和value表头,那代码可以简化成:
df = pd.read_csv('your_file.txt', sep='\s+') dates_list = df['date'].tolist() values_array = df['value'].to_numpy()
这样就能轻松把两列内容分别存入独立的列表或数组啦!
内容的提问来源于stack exchange,提问作者alwaysq2000
相关产品推荐
相关产品推荐

