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

如何基于id与time列值匹配对DataFrame行分组合并?

解决方案:按id和time分组合并行

我明白你想做的事啦——把id和time完全匹配的行合并,同时把number和title列的对应值用空格拼接在一起对吧?之前用groupby没成功大概率是没选对合适的聚合方式,下面是具体的实现代码:

首先,我们用groupby指定分组键为id和time,然后对number和title列使用字符串拼接的聚合逻辑,最后调整列顺序和索引就能得到你想要的结果:

import pandas as pd

# 构造你的原始DataFrame
df = pd.DataFrame({
    'number': [10, 11],
    'title': ['aa', 'bb'],
    'id': [100, 100],
    'time': ['02.05.2018 04', '02.05.2018 04']
})

# 分组并聚合:将同组的number、title用空格拼接
merged_df = df.groupby(['id', 'time']).agg(
    number=('number', lambda x: ' '.join(x.astype(str))),
    title=('title', lambda x: ' '.join(x.astype(str)))
).reset_index()

# 调整列顺序,和你期望的输出一致
merged_df = merged_df[['number', 'title', 'id', 'time']]

print(merged_df)

代码说明:

  • groupby(['id', 'time']):确保所有id和time完全相同的行被分到同一组
  • agg方法里的lambda函数:因为number是数值类型,先转成字符串再用空格拼接;title本身是字符串,直接拼接即可
  • reset_index():把id和time从分组索引变回普通列
  • 最后调整列顺序,让结果和你给出的期望输出列顺序一致

运行这段代码后,输出结果为:

number title   id            time
0  10 11  aa bb  100  02.05.2018 04

如果后续有更多行需要合并(比如同一id和time下有3个number值),这个方法也能自动把所有对应值拼接在一起,非常灵活。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:58:42