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

如何合并pandas DataFrame中Label列开头整数相同的行

实现方案

你可以通过「提取行首数字作为分组键→按组拼接文本」的逻辑实现需求,完整可运行代码如下:

import pandas as pd

# 构造测试数据,你可以替换成你自己的DataFrame
df = pd.DataFrame({
    'Label': ['70 hello', '70 world', '40 hi', '40 I', '45 panda']
})

# 步骤1:拆分出前缀数字和后续文本
df[['prefix', 'content']] = df['Label'].str.extract(r'^(\d+)\s(.*)$', expand=True)

# 步骤2:按前缀数字分组,拼接同组的文本内容,保持原有出现顺序
grouped_df = df.groupby('prefix', sort=False)['content'].apply(' '.join).reset_index()

# 步骤3:合并前缀和拼接后的文本,得到最终结果
grouped_df['Label'] = grouped_df['prefix'] + ' ' + grouped_df['content']
result = grouped_df[['Label']]

# 输出结果
print(result)

运行后输出和你预期完全一致:

Label
0  70 hello world
1        40 hi I
2       45 panda

代码说明

  • 正则表达式^(\d+)\s(.*)$可以自动匹配行首任意长度的连续数字,不管是2位还是3位都能正确提取,不需要提前指定具体数字范围
  • sort=False参数保证分组后的顺序和数字首次出现的顺序一致,如果你需要按数字大小排序,删除该参数即可
  • 如果不想在原DataFrame中新增临时列,可以用如下更简洁的写法,逻辑完全一致:
result = (
    df.groupby(df['Label'].str.extract(r'^(\d+)', expand=False), sort=False)
    .agg(
        Label=('Label', lambda s: f"{s.name} {' '.join(s.str.split(n=1).str[1])}")
    )
    .reset_index(drop=True)
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 01:45:00