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

如何批量删除文件夹中所有文本文件的指定多列?

批量处理TXT文件删除指定列的解决方案

原代码问题分析

你当前的代码错误使用了pd.concat([main_dataframe,df],axis=1),会把每个文件的列横向拼接,导致同一列名重复数百次,完全不符合需求;同时代码没有执行删列操作,也没有保存处理结果。

方案一:逐个处理每个文件并删除指定列

如果需要给每个文件单独删除指定列(可选择覆盖原文件或保存为新文件),使用以下代码:

import glob
import pandas as pd

folder_path = 'Desktop/GRB/data/k1/'
cols_to_drop = [0, 1, 3]  # 要删除的列索引

# 遍历所有txt文件
for file_path in glob.glob(folder_path + "/*.txt"):
    # 读取空格分隔的文本文件
    df = pd.read_csv(file_path, delimiter=r"\s+")
    # 删除指定列
    df = df.drop(df.columns[cols_to_drop], axis=1)
    # 覆盖原文件(不想覆盖的话,可改成保存新文件)
    df.to_csv(file_path, sep=' ', index=False)
    # 保存新文件示例:
    # new_file = file_path.replace('.txt', '_processed.txt')
    # df.to_csv(new_file, sep=' ', index=False)

方案二:合并所有文件后删除指定列

如果需要把所有文件的数据合并成一个大文件再删列,使用以下代码:

import glob
import pandas as pd

folder_path = 'Desktop/GRB/data/k1/'
cols_to_drop = [0, 1, 3]

all_dataframes = []
# 读取所有文件并收集DataFrame
for file_path in glob.glob(folder_path + "/*.txt"):
    df = pd.read_csv(file_path, delimiter=r"\s+")
    all_dataframes.append(df)

# 纵向合并所有数据(axis=0按行拼接,ignore_index重置行索引)
merged_df = pd.concat(all_dataframes, axis=0, ignore_index=True)
# 删除指定列
merged_df = merged_df.drop(merged_df.columns[cols_to_drop], axis=1)
# 保存合并处理后的文件
merged_df.to_csv(f"{folder_path}/merged_processed.txt", sep=' ', index=False)

关键说明

  • pd.read_csv的delimiter=r"\s+"可正确解析空格分隔的文本,不管连续空格数量多少都能识别为分隔符
  • df.drop(df.columns[cols_to_drop], axis=1)就是你需要的删列代码,放在读取文件之后、保存之前即可生效
  • to_csv时指定sep=' '保证输出为空格分隔格式,index=False避免生成多余的行索引列

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 00:01:06