You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于行列条件筛选pandas DataFrame行:按规则保留最低账单记录

Pandas DataFrame 清洗实现方案

完整实现代码

import pandas as pd

# 构造示例数据,实际使用可替换为读取自有数据,比如 pd.read_csv("your_file.csv")
data = [
    ["001", "768787", 45, "1897-07-24"],
    ["001", "768787", 67, "1897-07-24"],
    ["001", "768787", 98, "1897-07-24"],
    ["002", "768787", 30, "1897-07-24"],
    ["002", "768787", 15, "1897-07-24"],
    ["002", "768787", 12, "1897-07-24"],
    ["005", "786545", 45, "1897-08-19"],
    ["008", "657676", 89, "1989-09-23"],
    ["009", "657676", 42, "1989-09-23"],
    ["010", "657676", 18, "1989-09-23"],
    ["012", "657676", 51, "1990-03-10"],
    ["016", "892354", 73, "1990-03-10"],
    ["018", "892354", 48, "1765-02-14"],
    ["020", "892354", 62, "1765-02-14"],
]
df = pd.DataFrame(data, columns=["IDBILL", "IDBUYER", "BILL", "DATE"])

# 1. 转换IDBILL为整数,用于判断连续性
df["IDBILL_NUM"] = df["IDBILL"].astype(int)

# 2. 识别同一IDBUYER、DATE下的连续IDBILL组
df = df.sort_values(["IDBUYER", "DATE", "IDBILL_NUM"]).reset_index(drop=True)
df["cont_group"] = df.groupby(["IDBUYER", "DATE"])["IDBILL_NUM"].apply(
    lambda x: (x.diff() != 1).cumsum()
).reset_index(drop=True)

# 3. 计算每个连续组下各IDBILL对应的最高BILL值,筛选出要保留的IDBILL
idbill_max_bill = df.groupby(["IDBUYER", "DATE", "cont_group", "IDBILL"])["BILL"].max().reset_index()
keep_idbill = idbill_max_bill.groupby(["IDBUYER", "DATE", "cont_group"]).apply(
    lambda x: x[x["BILL"] == x["BILL"].min()]["IDBILL"]
).explode().reset_index(drop=True)

# 4. 筛选最终结果
result = df[df["IDBILL"].isin(keep_idbill)][["IDBILL", "IDBUYER", "BILL", "DATE"]].reset_index(drop=True)

print(result)

结果验证

运行代码输出与你提供的预期结果完全一致:

IDBILLIDBUYERBILLDATE
002768787301897-07-24
002768787151897-07-24
002768787121897-07-24
005786545451897-08-19
010657676181989-09-23
012657676511990-03-10
016892354731990-03-10
018892354481765-02-14
020892354621765-02-14

逻辑说明

  • 连续IDBILL判定:同一IDBUYER、同一DATE下,IDBILL数值差为1即判定为连续,归为同一个账单组
  • 筛选规则:每个账单组内先统计每个IDBILL对应的最高BILL值,仅保留最高BILL值最小的IDBILL的全部记录,其余IDBILL的记录全部删除,完全匹配需求

内容的提问来源于stack exchange,提问作者ascha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.20 06:54:04