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

DataFrame保存后未垂直堆叠的故障原因及修复方法

Pandas合并dat文件格式错乱的故障原因与修复方案

故障核心原因

  1. 数据读取参数错误:.dat文件通常采用空格、制表符作为分隔符,若使用pd.read_csv()默认的逗号分隔符读取,会导致列识别错误,DataFrame结构异常,合并后输出格式混乱。
  2. 列结构不匹配:两个源文件的列名、列数不一致时,pd.concat()垂直堆叠会产生NaN值,保存后出现错位、格式错乱。
  3. 保存参数不合理:默认to_csv()会输出索引列,且未指定与源文件一致的分隔符,导致输出文本格式与预期不符。

分步修复方案

1. 正确读取.dat文件

根据源文件的分隔类型,指定sep参数:

  • 空格分隔(含多空格):
import pandas as pd
# 匹配任意数量的空格作为分隔符
df1 = pd.read_csv("data1.dat", sep=r"\s+")
df2 = pd.read_csv("data2.dat", sep=r"\s+")
  • 制表符分隔:
df1 = pd.read_csv("data1.dat", sep="\t")
df2 = pd.read_csv("data2.dat", sep="\t")

若源文件无表头,需手动指定列名:

cols = ["col1", "col2", "col3"]  # 替换为实际列名
df1 = pd.read_csv("data1.dat", sep=r"\s+", header=None, names=cols)
df2 = pd.read_csv("data2.dat", sep=r"\s+", header=None, names=cols)

2. 对齐列结构后合并

合并前先验证列一致性:

print("data1列结构:", df1.columns.tolist())
print("data2列结构:", df2.columns.tolist())

若列名不一致,统一列名后再执行合并,并重置索引避免重复:

# 统一df2列名与df1一致
df2.columns = df1.columns
# 垂直堆叠并重置索引
merged_df = pd.concat([df1, df2], axis=0, ignore_index=True)

3. 按预期格式保存文件

保存时关闭索引,并指定与源文件一致的分隔符:

# 制表符分隔示例,无索引输出
merged_df.to_csv("merged.dat", sep="\t", index=False)
# 空格分隔示例
merged_df.to_csv("merged.dat", sep=" ", index=False)

验证示例

假设源文件内容:

data1.dat:
col1 col2 col3
1 2 3
4 5 6

data2.dat:
col1 col2 col3
7 8 9
10 11 12

执行修复代码后,merged.dat会正确垂直堆叠为:

col1 col2 col3
1 2 3
4 5 6
7 8 9
10 11 12

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 21:34:50