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

如何基于列值筛选DataFrame中相似行?附示例场景

如何选择DataFrame中基于列值相似的行?

嘿,这个需求用pandas的分组功能就能完美解决,我来给你一步步演示具体怎么做:

先还原你的示例DataFrame:

import pandas as pd

df = pd.DataFrame({
    'col1': ['abc', 'asd', 'dfg', 'ghg', 'xyz'],
    'col2': [2, 4, 7, 2, 1],
    'col3': [3, 5, 5, 3, 3],
    'col4': [4, 6, 6, 4, 4]
})

接下来核心操作就是按col3和col4的值分组,然后提取每组的col1值组成列表:

# 按col3、col4分组,提取col1的列表
grouped_lists = df.groupby(['col3', 'col4'])['col1'].apply(list).tolist()
print(grouped_lists)
# 输出: [['abc', 'ghg', 'xyz'], ['asd', 'dfg']]

如果想要和你预期的顺序完全一致(先输出col3=5、col4=6的组),可以先对DataFrame按col3降序排序再分组:

# 先排序再分组,调整输出顺序
sorted_grouped_lists = df.sort_values('col3', ascending=False).groupby(['col3', 'col4'])['col1'].apply(list).tolist()
print(sorted_grouped_lists)
# 输出: [['asd', 'dfg'], ['abc', 'ghg', 'xyz']]

简单拆解下逻辑:

  • groupby(['col3', 'col4'])会自动把col3和col4值完全匹配的行归为同一组
  • ['col1'].apply(list)把每组里的col1字段值转换成一个列表
  • .tolist()把分组后的结果转换成你需要的嵌套列表格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 19:13:13