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

如何基于正则表达式合并Pandas DataFrame中的多行数据?

解决Pandas单列DataFrame跨行合并问题

问题背景

你有一个单列Pandas DataFrame,数据如下:

cat = { 'cat': ['a','b','c-','        -d','e']}
df = pd.DataFrame(cat)

输出:

cat
0           a
1           b
2          c-
3          -d
4           e

需要将索引2和3的行合并为cd,得到目标结果:

cat
0           a
1           b
2          cd
3          e

之前尝试的df['cat'] = df['cat'].str.replace("-\n {8}-","",flags=re.M)无法生效,且不能使用分组方法。

解决方案

问题出在str.replace是对Series的每个元素单独处理,每个元素内部没有换行符,因此正则中的\n无法匹配跨行内容。我们可以先将整个Series拼接为单个字符串,处理后再拆分重构DataFrame:

import pandas as pd
import re

# 原数据
cat = { 'cat': ['a','b','c-','        -d','e']}
df = pd.DataFrame(cat)

# 1. 将Series拼接为带换行分隔的字符串
combined_str = '\n'.join(df['cat'])
# 2. 替换目标跨行模式
processed_str = re.sub(r'-\n {8}-', '', combined_str)
# 3. 拆分回列表并生成新DataFrame
new_df = pd.DataFrame({'cat': processed_str.split('\n')})

# 验证结果
print(new_df)

输出结果

cat
0   a
1   b
2  cd
3   e

说明

  • 先拼接成整体字符串,才能让正则匹配到-\n {8}-这个跨行模式(即c-换行后接8个空格加-d)。
  • 替换后拆分回列表,直接重构DataFrame,全程未使用分组方法,符合要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 02:58:21