如何删除每个id下首次events=1前后的行?Excel/Python实现方法
实现方法(Excel & Python)
Excel 实现方法
辅助列筛选法
- 假设数据中
id列在A列,events列在B列,在C1单元格输入公式:
这个公式会统计当前行及以上范围内,相同=COUNTIFS($A$1:A1,A1,$B$1:B1,1)id下events=1的累计次数。 - 下拉填充整个C列,完成辅助列计算。
- 选中C列,点击「数据」选项卡的「筛选」,只保留C列值为
1的行——这些就是每个id下首次出现events=1的目标行。 - 复制筛选后的行到新工作表,或直接删除其他行即可。
Power Query 高效法
- 选中数据区域,点击「数据」→「从表格/区域」,将数据导入Power Query编辑器。
- 点击「转换」选项卡→「分组依据」,设置分组列为
id,操作选「所有行」,新列名设为分组数据。 - 添加自定义列,公式输入:
该公式会提取每组中第一个=Table.First(Table.SelectRows([分组数据], each [events] = 1))events=1的行。 - 点击自定义列右侧的展开按钮,展开所有列,删除多余的
分组数据列。 - 点击「关闭并上载」,将结果导出到Excel表格。
Python(Pandas)实现方法
- 先导入依赖库并读取数据:
import pandas as pd # 读取Excel文件,替换为你的文件路径 df = pd.read_excel("data.xlsx") - 提取每个
id下首次出现events=1的行:# 筛选所有events=1的行,再按id分组取第一行 result_df = df[df["events"] == 1].groupby("id").head(1) - 保存结果到新文件:
result_df.to_excel("result.xlsx", index=False)
内容的提问来源于stack exchange,提问作者Kevin Song
相关产品推荐
相关产品推荐

