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

如何在Pandas中按行列对应拼接多CSV文件的单元格字符串

Pandas实现多CSV文件同位置字符串拼接

需求说明

现有文件夹内多个CSV文件,行列结构完全一致,单元格均为字符串,需要将对应位置的单元格字符串拼接(示例中用空格分隔,可按需调整),最终生成一个新的DataFrame,而非新增行/列。


解决方案

以下提供两种高效实现方式,均基于Pandas完成:

方法一:使用reduce逐次合并DataFrame

适合需要单独处理特定列(如示例中第一列无需重复拼接)的场景:

import pandas as pd
import os
from functools import reduce

# 1. 配置文件夹路径,获取所有CSV文件
csv_dir = "./your_csv_folder/"
csv_paths = [os.path.join(csv_dir, f) for f in os.listdir(csv_dir) if f.lower().endswith(".csv")]

# 2. 批量读取所有CSV到DataFrame列表
df_collection = [pd.read_csv(path, index_col=False) for path in csv_paths]

# 3. 定义拼接逻辑:逐列合并对应单元格字符串
def merge_dfs(df_a, df_b):
    # 遍历所有列,第一列保留原始值(按需修改),其他列拼接字符串
    for col in df_a.columns:
        if col != df_a.columns[0]:
            # 用空格分隔,无需分隔符则改为 df_a[col] + df_b[col]
            df_a[col] = df_a[col] + " " + df_b[col]
    return df_a

# 4. 合并所有DataFrame
final_df = reduce(merge_dfs, df_collection)

# 5. 保存结果
final_df.to_csv("concatenated.csv", index=False)

方法二:使用concat+groupby批量拼接

代码更简洁,适合所有列都需要拼接的场景,若需保留特定列可后续调整:

import pandas as pd
import os

# 1. 获取CSV文件路径并读取
csv_dir = "./your_csv_folder/"
csv_paths = [os.path.join(csv_dir, f) for f in os.listdir(csv_dir) if f.lower().endswith(".csv")]
df_collection = [pd.read_csv(path, index_col=False) for path in csv_paths]

# 2. 堆叠所有DataFrame,按原行索引分组拼接
stacked_dfs = pd.concat(df_collection, keys=range(len(df_collection)))
# 按原行分组,对每组内的字符串拼接(空格分隔,可改为''实现无分隔符)
final_df = stacked_dfs.groupby(level=1).agg(lambda x: " ".join(x))

# (可选)若第一列无需拼接,替换为第一个DataFrame的第一列
final_df.iloc[:, 0] = df_collection[0].iloc[:, 0]

# 3. 保存结果
final_df.to_csv("concatenated.csv", index=False)

关键说明

  • 若不需要空格分隔,将代码中的" "替换为空字符串""即可实现纯字符串拼接
  • 确保所有CSV文件的列名、行顺序完全一致,否则会导致拼接错位
  • 若CSV文件有自定义表头或索引,需调整pd.read_csv的参数(如header=0或index_col=0)适配你的文件结构

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 02:15:13