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

如何将多列大型文本文件转换为DataFrame?附数据样例

解决dxd文件转DataFrame并处理时间特征的方案

没问题,我来帮你搞定这个文件转DataFrame的事儿!你的这个dxd文件不是标准CSV格式,前面带了元数据说明,直接用pd.read_csv会把这些元数据也读进来导致失败,咱们分步骤处理:

1. 读取文件到DataFrame

首先跳过前面的元数据行,指定正确的分隔符(你的数据是用空格分隔的),代码如下:

import pandas as pd

# 替换成你的文件路径,注意Windows路径用r前缀避免转义问题
file_path = r"D:\Share\20190418 - Baseline test Nu2\20190418 BaselineTest_0000.dxd"

# 读取文件:跳过前7行(元数据+Data1标记行),用正则匹配多个空格作为分隔符
df = pd.read_csv(
    file_path,
    skiprows=7,  # 跳过前7行无关内容,从表头行开始读取
    sep=r'\s+',  # 匹配一个或多个空格,适配列间的空格分隔
    engine='python'  # 避免正则分隔时的引擎警告
)

# 查看前5行确认读取是否正确
print(df.head())

2. 处理时间相关数据

你的文件里的Time (s)是相对开始时间的秒数,结合文件里给出的开始时间,咱们可以生成绝对时间列,方便后续时间统计:

# 解析文件里的开始时间,注意格式是日/月/年 时分秒.毫秒
start_time = pd.to_datetime("18/04/2019 08:58:48.000", format="%d/%m/%Y %H:%M:%S.%f")

# 计算绝对时间:开始时间 + 相对秒数
df['Absolute_Time'] = start_time + pd.to_timedelta(df['Time (s)'], unit='s')

# 把绝对时间设为索引,方便后续时间序列分析
df.set_index('Absolute_Time', inplace=True)

# 查看处理后的时间列
print(df[['Time (s)']].head())

3. 提取时间统计特征示例

既然是时间相关数据,你可以用滚动窗口、时间聚合等方式提取特征,比如计算100毫秒窗口内的油温均值(采样率100000,100毫秒对应10000个样本):

# 创建10000个样本的滚动窗口
rolling_window = df.rolling(window=10000)

# 计算窗口内的进油/出油温度均值
temp_rolling_mean = rolling_window[['Temp_Oil in (°C)', 'Temp_Oil out (°C)']].mean()

# 查看结果
print(temp_rolling_mean.dropna().head())

可能的小调整

  • 如果读取时发现跳过的行数不对,可以调整skiprows的值(比如实际文件里元数据行数不同)
  • 如果遇到编码问题,可在pd.read_csv里添加encoding='utf-8'或encoding='gbk'参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 20:02:37