如何基于列值筛选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
相关产品推荐
相关产品推荐

