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

使用循环构造路径读取Parquet文件合并DataFrame报错求助

问题解释与解决方法

错误原因分析

  1. 直接报错原因:第二个循环中,i是从Total_df列表取出的字符串文件名(比如'ais_comb_1.parquet'),你执行了i +=1,试图将字符串和整数拼接,这在Python中不被允许,因此抛出TypeError: can only concatenate str (not "int") to str。
  2. 额外隐藏问题:
    • 路径拼接错误:手动拼接'main_data_1/'+ str(i),既没有结合根路径变量,也未适配Windows系统的反斜杠路径格式,容易导致文件找不到。
    • DataFrame合并逻辑错误:all_ais_msg_df初始是列表,调用all_ais_msg_df.append(df)后转成DataFrame,会导致数据结构混乱,且循环逐次合并效率极低。
    • 冗余代码:第一个循环中的j +=1完全多余,for j in np.arange(1,len(dir_list)+1)已经会自动让j从1递增到len(dir_list),手动加1会跳过部分序号的文件名。

解决方法与优化代码

修正后的完整代码

import os
import pandas as pd
import numpy as np

# 根路径
path = "C:**********\\main_data_1"
dir_list = os.listdir(path)

# 构造所有目标文件名
total_df = []
for j in np.arange(1, len(dir_list) + 1):
    filename = f'ais_comb_{j}.parquet'
    total_df.append(filename)

# 读取并合并所有Parquet文件
all_ais_msg_df = []
for filename in total_df:
    # 用os.path.join自动适配路径分隔符,避免手动拼接错误
    file_path = os.path.join(path, filename)
    df = pd.read_parquet(file_path)
    all_ais_msg_df.append(df)

# 一次性合并所有DataFrame,效率远高于循环逐次合并
final_df = pd.concat(all_ais_msg_df, ignore_index=True)

# 可选:将合并后的结果保存为单个Parquet文件
final_df.to_parquet(os.path.join(path, 'combined_all_ais.parquet'))

关键修正说明

  • 移除无效代码:删掉i +=1和j +=1,循环变量会自动迭代,手动修改只会引发逻辑错误或类型报错。
  • 规范路径拼接:使用os.path.join()替代手动拼接,自动适配Windows/Linux的路径分隔符,避免路径格式错误。
  • 优化合并逻辑:先将所有读取的DataFrame存入列表,最后用pd.concat()一次性合并,既保证数据结构正确,又提升运行效率。
  • 简化文件名构造:用f-string(f'ais_comb_{j}.parquet')替代传统字符串拼接,代码更简洁易读。

更简洁的写法(可选)

如果文件名确实严格遵循ais_comb_1.parquet到ais_comb_N.parquet的规律,可以省略构造文件名的循环,直接生成路径:

import os
import pandas as pd

path = "C:**********\\main_data_1"
file_count = len(os.listdir(path))

# 直接生成所有文件的完整路径
file_paths = [os.path.join(path, f'ais_comb_{j}.parquet') for j in range(1, file_count + 1)]

# 读取并合并所有文件
final_df = pd.concat([pd.read_parquet(fp) for fp in file_paths], ignore_index=True)
final_df.to_parquet(os.path.join(path, 'combined_all_ais.parquet'))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 17:40:31