python - 如何在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])
解决方案
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
推荐阅读
- python - 以下代码的算法或性能改进
- python - 如何在子字符串中拆分嵌套列表?
- sql-server - 将 DATEDIFF 间隔作为用户定义的函数参数传递?
- macros - 宏定义中的“位置太少”
- regex - 从字符串中提取多个 5 位数字
- python - 发送网络推送通知时如何修复 403 MismatchSenderId?
- java - ListView 中的可扩展项
- javascript - 如何检查键是否具有对象列表作为值,然后遍历子项并显示它们
- python - 功能在它应该出现的时候没有出现
- python - 打印一小时的 cpu 使用情况并获取 cpu 的平均值并打印一小时内的最高峰值