首页 > 解决方案 > 如何在groupby之后进行条件if语句过滤

问题描述

我正在尝试根据 ApplicationStatus 字段的字符串值过滤掉组中的行。这是表格:

主要应用 总请求 申请状态
应用 1 10,000 得到正式认可的
应用 1 10,000 拒绝
应用 2 15,000 得到正式认可的
应用 2 30,000 拒绝
应用 3 50,000 拒绝
应用 3 20,000 锁定

我一直在尝试编写一个函数,如果第 1 行是“已批准”,则删除该组的第二行,如果第 1 行是“已拒绝”,则删除该组的第一行。这是我的预期输出:

主要应用 总请求 申请状态
应用 1 10,000 得到正式认可的
应用 2 15,000 得到正式认可的
应用 3 20,000 锁定

这是我尝试的代码:

df_Group = df.groupby("Primary Application").apply(lambda x: x.loc[0] if x.ApplicationStatus == 'Approved' else x.loc[1])

标签: pythonpandasdataframe

解决方案


df_Group = df.groupby("Primary_Application", as_index=False).apply(
    lambda x: x.iloc[0]
    if x["ApplicationStatus"].iat[0] == "Approved"
    else x.iloc[1]
)
print(df_Group)

印刷:

  Primary_Application Total_Request ApplicationStatus
0       Application 1        10,000          Approved
1       Application 2        15,000          Approved
2       Application 3        20,000            Locked

推荐阅读