Pandas如何按amount列连续重复值分组并保留每组首行?
按连续重复值分组保留每组首行
原始DataFrame
创建数据的代码:
import pandas as pd df = pd.DataFrame( [['1001',34.3],['1009',34.3],['1003',776],['1015',18.95],['1023',18.95],['1007',18.95],['1009',18.95],['1037',321.2],['1001',344.2],['1016',3.2],['1017',3.2],['1027',344.2]], columns=['id','amount'] )
原始数据展示:
id amount 0 1001 34.30 1 1009 34.30 2 1003 776.00 3 1015 18.95 4 1023 18.95 5 1007 18.95 6 1009 18.95 7 1037 321.20 8 1001 344.20 9 1016 3.20 10 1017 3.20 11 1027 344.20
需求
生成df_new,按amount列的连续重复值分组,仅保留每组的第一行数据。
解决方案
通过对比当前行与前一行的amount值,筛选出首次出现连续重复值的行:
# 生成筛选掩码:第一行保留,后续行仅当与上一行amount不同时保留 mask = df['amount'].ne(df['amount'].shift()) df_new = df[mask]
最终结果
id amount 0 1001 34.30 2 1003 776.00 3 1015 18.95 7 1037 321.20 8 1001 344.20 9 1016 3.20 11 1027 344.20
内容的提问来源于stack exchange,提问作者PiDesign Interior
相关产品推荐
相关产品推荐

