如何在Python中按字段条件删除DataFrame行,保留有序列分组首行
在Pandas DataFrame中保留有序分组的首行
给定一个已按首列排序的列表:
a = [[1,'a'],[1,'c'],[1,'b'],[2,'c'],[2,'b'],[2,'a'],[3,'d']]
我们需要将其转换为仅保留每个首列值分组首行的结果:
a = [[1,'a'],[2,'c'],[3,'d']]
实现步骤
- 导入Pandas并转换为DataFrame
import pandas as pd # 将列表转为DataFrame,指定列名 df = pd.DataFrame(a, columns=['col1', 'col2'])
- 保留每个分组的首行
因为数据已经按col1有序排列,直接使用drop_duplicates方法,指定按col1去重并保留第一个出现的行:
# 去重并保留每个col1分组的首行 result_df = df.drop_duplicates(subset='col1', keep='first')
- 转换回列表格式(可选)
如果需要将结果转回列表:
result_list = result_df.values.tolist() print(result_list) # 输出: [[1, 'a'], [2, 'c'], [3, 'd']]
另一种实现方式:使用groupby
也可以通过groupby方法取每个分组的第一行,效果一致:
result_df = df.groupby('col1', as_index=False).first()
内容的提问来源于stack exchange,提问作者VictorS
相关产品推荐
相关产品推荐

