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

循环读取单列txt文件追加到DataFrame后首列外均为NaN问题求助

问题根因

你的代码问题出在append方法的使用逻辑上:append是按行纵向拼接DataFrame的接口,你每次读入的单列DataFrame仅包含对应文件名的列,和已有的结果DataFrame做列对齐时,其他不存在的列会自动填充NaN,因此会出现只有第一列有值、其他列全为NaN的问题。另外pandas 2.0及以上版本已经完全废弃append方法,更推荐使用concat实现拼接需求。

解决方案

改用concat按列横向拼接即可实现「每个txt作为单独一列存入同一个DataFrame」的需求,修改后的代码如下:

  1. 先将所有读入的单列DataFrame存入列表
import os
import pandas as pd

dataPath = os.path.join(os.getcwd(), Project)
df_list = []
for filename in os.listdir(dataPath):
    if filename.endswith(".txt"):
        columnName = os.path.basename(filename)
        df = pd.read_csv(
            os.path.join(dataPath, filename), 
            index_col=None, 
            header=0,
            names=[columnName],
            dtype=float
        )
        df_list.append(df)
  1. 按列拼接所有DataFrame
# axis=1 代表按列横向拼接,自动对齐行索引
data = pd.concat(df_list, axis=1)

注意事项

如果不同txt文件的行数不一致,行数更少的列末尾会自动填充NaN;如果你的业务要求所有txt行数必须一致,可以在拼接前添加校验逻辑判断每个df的行数是否相同。
不需要使用merge接口,merge是用来做表关联匹配的,你的场景属于简单的多表横向拼接,concat完全可以满足需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 04:27:03