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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 21:27:29