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

如何在Pandas DataFrame中按换行符拼接多列内容?

解决方案

要实现按换行对应的分段拼接三列内容,需先将每个单元格的字符串按换行符拆分,再逐段对应拼接后重新用换行符连接,以下是两种可行方法:

方法一:使用apply配合列表推导式

cols = ['col1', 'col2', 'col3']

df['DesiredCol'] = df[cols].apply(
    lambda row: '\n'.join([' '.join(items) for items in zip(*[s.split('\n') for s in row])]),
    axis=1
)

代码说明

  1. [s.split('\n') for s in row]:将当前行的每一列字符串按换行符拆分为列表,得到三个包含分段内容的列表。
  2. zip(*[...]):将三个列表按索引一一配对,生成如('ABC1', 'A', 'YES')这样的元组,对应每一行的分段组合。
  3. ' '.join(items):将每个元组内的三个元素用空格拼接为单个字符串。
  4. '\n'.join([...]):把所有拼接好的分段字符串用换行符连接,得到目标格式的内容。

方法二:向量化处理(适合大数据集)

如果数据集规模较大,推荐用向量化操作替代apply,执行效率更高:

# 将每一列按换行符拆分为多列
df_expanded = df[cols].apply(lambda x: x.str.split('\n', expand=True))

# 按分段位置拼接对应列,再合并为带换行的字符串
df['DesiredCol'] = df_expanded.apply(
    lambda row: '\n'.join([' '.join(row[i::3]) for i in range(3)]),
    axis=1
)

最终效果

处理后df['DesiredCol']的内容如下:

  • 第一行:
ABC1 A YES
ABC2 B NO
ABC3 C YES
  • 第二行:
BBC1 A NO
BBC2 B NO
BBC3 C YES

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 03:22:11