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

如何在Pandas中按字符串部分内容分组并构建新DataFrame

从DataFrame字符串列提取分组键并合并对应列内容的解决方案

看起来你想从列A的字符串里提取string_xxx这样的部分作为分组依据,然后把每组的B列文本用换行合并成新的DataFrame。你之前的尝试用了str.contains,得到的是布尔值的分组对象,这和你的需求不太匹配,咱们来调整一下:

步骤分解

  1. 提取分组键:用正则表达式从列A中提取出string_数字格式的部分,这会作为我们的分组依据。
  2. 分组聚合:用提取到的分组键对原DataFrame分组,然后把每组的B列内容用\n\n连接起来。
  3. 转换为目标DataFrame:把聚合后的结果整理成你想要的结构。

完整代码示例

import pandas as pd

# 原DataFrame
df = pd.DataFrame([
    {'A': 'string_300_bla1', 'B': "Hi", 'C': 3},
    {'A': 'string_300_blaa2', 'B': "Hello", 'C': 4},
    {'A': 'string_487_blaaa1', 'B': "nice", 'C': 9},
    {'A': 'string_487_blaaa2', 'B': "day", 'C': 6}
])

# 1. 从A列提取分组键(string_xxx格式)
df['group_key'] = df['A'].str.extract(r'(string_\d+)')

# 2. 按分组键分组,合并B列内容
result = df.groupby('group_key')['B'].agg('\n\n'.join).reset_index()

# 3. 重命名列,匹配期望的输出格式
result.columns = ['A', 'B']

print(result)

输出结果

运行后会得到你期望的DataFrame:

A          B
0  string_300  Hi\n\nHello
1  string_487  nice\n\nday

关键说明

  • str.extract(r'(string_\d+)'):正则表达式里的括号表示捕获组,\d+匹配一个或多个数字,这样就能精准提取出string_xxx部分。
  • groupby('group_key')['B'].agg('\n\n'.join):按分组键分组后,对B列应用字符串连接操作,用\n\n分隔每个元素。
  • reset_index():把分组后的索引转换成普通列,方便后续重命名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 18:12:28