如何在Python中导入.dat数据文件并提取指定列到列表
读取.dat文件指定列的简便方法
你之前的代码错误在于直接对文件对象调用np.shape()——文件对象不是numpy数组,无法获取形状信息,自然会报错。以下是几种高效获取第二、三列数据的方法:
方法1:使用numpy.loadtxt(最简洁)
numpy提供了直接读取文本文件指定列的工具,适合处理数值型数据:
import numpy as np # 跳过前2行表头,读取第2、3列(索引从0开始,对应原数据的第二、三列) pressure, energy_density = np.loadtxt( r"C:\Users\Ramos\PycharmProjects\pythonProject\apr.dat", skiprows=2, usecols=(1, 2), unpack=True ) # 如需转成Python列表,调用tolist()即可 pressure_list = pressure.tolist() energy_density_list = energy_density.tolist()
skiprows=2:跳过前两行(表头行和分隔线行)usecols=(1,2):指定读取第2、3列unpack=True:将每列数据拆分为单独的numpy数组
方法2:使用pandas(适合复杂表格操作)
如果需要后续对数据进行筛选、统计等操作,pandas的灵活性更强:
import pandas as pd # 读取文件,以任意空白字符为分隔符,跳过前2行表头 df = pd.read_csv( r"C:\Users\Ramos\PycharmProjects\pythonProject\apr.dat", skiprows=2, sep=r'\s+', names=['mass_density', 'pressure', 'energy_density'] ) # 提取指定列并转为列表 pressure_list = df['pressure'].tolist() energy_density_list = df['energy_density'].tolist()
sep=r'\s+':适配数据中的空格分隔格式names:手动指定列名,方便后续通过列名索引数据
方法3:纯Python实现(无需第三方库)
如果不想依赖numpy或pandas,纯Python代码也能完成需求:
pressure_list = [] energy_density_list = [] # 用with语句自动管理文件资源 with open(r"C:\Users\Ramos\PycharmProjects\pythonProject\apr.dat", 'r') as f: # 跳过前2行表头 next(f) next(f) for line in f: line = line.strip() # 跳过空行 if not line: continue # 按空格分割每行数据 parts = line.split() # 提取第二、三列并转为浮点数 pressure_list.append(float(parts[1])) energy_density_list.append(float(parts[2]))
内容的提问来源于stack exchange,提问作者Ramos
相关产品推荐
相关产品推荐

