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

如何将非固定宽度空格分隔文件转为Pandas DataFrame并合并多TXT文件

读取多份TXT记录并合并为CSV的Python方案

1. 单个TXT文件的读取逻辑

每个TXT文件是单条记录的键值对格式,最后一行Name: 0, dtype: object属于无用信息需要忽略。我们可以写一个函数来提取有效键值对并转换为单行DataFrame:

import pandas as pd

def read_single_txt(file_path):
    record = {}
    with open(file_path, 'r', encoding='utf-8') as f:
        lines = f.readlines()
        # 跳过最后一行的冗余信息
        for line in lines[:-1]:
            # 只拆分一次,适配键名含空格的情况(比如"Weather conditions")
            key, value = line.strip().split(maxsplit=1)
            # 自动转换数值类型(可选,按需调整)
            try:
                value = float(value)
                # 整数类数值转成int(比如Vehicle_condition)
                if value.is_integer():
                    value = int(value)
            except ValueError:
                # 非数值类型保持原字符串
                pass
            record[key] = value
    # 转为单行DataFrame
    return pd.DataFrame([record])

2. 批量处理所有TXT文件

用glob批量获取目标目录下的所有TXT文件,循环读取并合并成完整的DataFrame:

import glob
import os

# 替换为你的TXT文件存放目录
txt_directory = "./delivery_dataset"
# 获取目录下所有.txt文件的路径
all_txt_files = glob.glob(os.path.join(txt_directory, "*.txt"))

# 存储每个文件的DataFrame
df_collection = []
for file_path in all_txt_files:
    single_df = read_single_txt(file_path)
    df_collection.append(single_df)

# 合并所有数据,重置索引
merged_df = pd.concat(df_collection, ignore_index=True)

3. 导出为CSV文件

将合并后的DataFrame保存为单个CSV文件:

# 替换为你想要保存的CSV路径
merged_df.to_csv("./merged_delivery_records.csv", index=False, encoding='utf-8')

额外提示

  • 针对45000+文件的场景:现代机器的内存完全能支撑Pandas处理4万+行数据,如果内存吃紧,可以考虑分批次写入CSV,或者使用dask.dataframe来优化内存占用。
  • 编码问题:如果TXT文件读取时出现乱码,尝试修改open函数的encoding参数为gbk或utf-16等其他编码。
  • 数值转换:如果不需要自动转换类型,直接移除函数里的try-except块即可,所有字段会保留为字符串类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 03:48:35