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

如何在Pandas DataFrame中同一行展示多个逗号分隔的匹配项

解决方案

不需要手动遍历df条目创建匹配列表,用pandas内置的分组聚合功能就能更简洁高效的实现需求,性能远高于自行循环的实现。

最简实现代码

替换你原有逻辑中的循环、赋值、去重部分,核心仅需一行分组聚合代码:

import pandas as pd

data = {'some_primary_key':['unique_value_1',
                            'unique_value_2',
                            'unique_value_3']*2,
        'values':['some_value_1', 'some_value_3', 'some_value_5',
                  'some_value_2', 'some_value_4', 'some_value_6']
                      }
                                                                          
df = pd.DataFrame(data=data)

# 按主键分组,对values列执行逗号拼接,自动去重主键行
result = df.groupby('some_primary_key', as_index=False)['values'].agg(','.join)
print(result)

其他适配场景方案

如果你需要保留另一个仅含主键的表的所有主键(即使某个主键没有对应的values值也要保留在结果中),可以先关联再聚合:

# 你的仅含主键的表示例
df_primary = pd.DataFrame({'some_primary_key': ['unique_value_1', 'unique_value_2', 'unique_value_3']})

result = df_primary.merge(df, on='some_primary_key', how='left')\
                .groupby('some_primary_key', as_index=False)['values']\
                .agg(lambda x: ','.join(x.dropna()))

优势说明

  • 代码更简洁,避免了手动遍历、筛选、赋值、去重的冗余逻辑
  • 执行效率更高,pandas底层的分组聚合做了优化,数据量越大比手动循环的优势越明显

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 07:48:04