Pandas多矩阵循环拼接的更优实现方法
Pandas 多混合类型矩阵拼接优化方案(无需哑变量)
原有写法问题说明
你之前尝试的列表收集方案本身思路是对的,没有得到合并后的单一矩阵,是因为漏了最后一步统一拼接的操作——仅把DataFrame存入列表不会自动合并,自然得到的是独立矩阵的集合。
另外你最初用计数哑变量的循环拼接写法,除了冗余变量的问题,还有性能缺陷:每次循环执行pd.concat都会反复复制已加载的全量数据,矩阵规模大、文件数量多的时候运行效率会明显降低。
最优实现方案(推荐,性能最高)
用列表收集所有读入的矩阵,最后一次性完成拼接,不需要任何计数哑变量,同时性能远高于逐次循环拼接:
import pandas as pd matrix_container = [] for file_name in list_of_matrices: # 读入单文件矩阵,混合数值、字符串类型不会影响拼接逻辑 single_mat = pd.read_csv(file_name) matrix_container.append(single_mat) # 核心:一次性拼接列表内所有矩阵,得到单一合并结果 matrix_final = pd.concat(matrix_container, ignore_index=True)
参数说明
ignore_index=True:重置拼接后的行索引,避免多个矩阵的原行索引重复- 如果需要标记每行数据来自哪个原文件,可以追加参数
keys=list_of_matrices, names=["source_file", "origin_idx"],给数据带来源标签
极简写法(无需显式定义循环)
如果追求代码更简洁,可以直接用生成器表达式作为pd.concat的输入,连中间列表都可以省略:
matrix_final = pd.concat( (pd.read_csv(name) for name in list_of_matrices), ignore_index=True )
内容的提问来源于stack exchange,提问作者Felix
相关产品推荐
相关产品推荐

