如何在pandas中按分组删除指定行,仅保留每个分组的前两行数据
实现方法
方法1:直接取分组前2行(适合日期已按升序排列的场景)
你给出的示例数据中每个分组的DATE已经按时间先后排序,直接用groupby配合head方法即可:
import pandas as pd # 原始数据构造 data={'GROUP':['A','A','A','B','B','B','B','C','C','C','C','C'],'DATE':['202101','202102','202103','201907','201908','201909','201910','202003','202004','202005','202006','202007']} df=pd.DataFrame(data, columns=['GROUP','DATE']) # 核心处理代码 result = df.groupby('GROUP').head(2)
输出结果和需求完全匹配:
GROUP DATE 0 A 202101 1 A 202102 3 B 201907 4 B 201908 7 C 202003 8 C 202004
方法2:先排序再取(通用场景,避免日期乱序导致结果错误)
如果不能保证每个分组内的DATE是按时间顺序排列的,先排序再取前2行更稳妥:
result = df.sort_values(['GROUP', 'DATE']).groupby('GROUP').head(2)
内容的提问来源于stack exchange,提问作者wild west
相关产品推荐
相关产品推荐

