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

Pandas逐行写入多txt文件数据时dataframe自动重置丢失数据如何解决?

问题根因

你遇到的DataFrame自动清空历史数据的问题来自两个核心逻辑错误:

  • DataFrame的初始化代码放在了单文件处理循环内部,每次处理新文件都会创建全新的空df,直接覆盖之前已经写入了数据的旧df
  • 清空文件夹的逻辑位置错误,当前你每处理完一个文件就会删除整个文件夹下的所有内容,还没来得及读取的后续文件会被直接删除,自然无法写入数据
    另外你的代码还存在列名不匹配的问题:初始化df时指定的列名是ColA、ColB,但append数据时用的键是V、I,会导致数据存到错误的列或者出现空值。

修改方案

你需要调整3部分代码:

  1. 将DataFrame初始化代码移到所有文件遍历逻辑的最外层,全局只初始化一次
  2. 将清空文件夹的逻辑移到所有文件全部处理完成之后,避免提前删除未读文件
  3. 统一列名,同时建议用pd.concat替代已经废弃的append方法,避免版本兼容告警

修改后的代码示例

import pandas as pd
import glob
import os
from io import StringIO

# 全局初始化一次DataFrame,统一列名
df = pd.DataFrame(columns = ['ColA', 'ColB'])

# 遍历所有待处理txt文件,可替换为你自己的文件生成/遍历逻辑
file_list = glob.glob('C:/Users/chent/Desktop/Device_Test/*.txt')
for file in file_list:
    with open('C:/Users/chent/Desktop/Device_Test/' + file, "r") as curr_file:
        content = curr_file.readlines()                   
        count = 0
                    
        # 包含"V(Status)"的行的下一行是目标行
        for val in content:
            if val.find("V(Status)")==-1:
                count+=1
            else:
                count+=1                           
                line = content[count]
                            
                # 解析目标行
                TESTDATA = list(line.split())
                curr_V = TESTDATA[0]
                curr_I = TESTDATA[1]
                # 统一用初始化的列名写入数据,用concat替代废弃的append
                new_row = pd.DataFrame([{'ColA' : curr_V, 'ColB' : curr_I}])
                df = pd.concat([df, new_row], ignore_index=True)

# 所有文件处理完成后再执行清空文件夹操作
del_file_list = glob.glob('C:/Users/chent/Desktop/Device_Test/*')
for f in del_file_list:
    os.remove(f)

# 输出最终合并结果
print(df)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 03:45:04