如何用Python Pandas循环结合条件筛选匹配日期的银行审批数据
用循环实现银行审批数据筛选需求
现有一份银行审批数据集,包含EOM Date(数据上传日期)、Approve Date(实际审批日期)及Facility Id字段。原本可以用numpy的np.where方法筛选出EOM Date与Approve Date匹配的记录,现在需要改用循环方式实现该筛选需求。
原始数据集
import pandas as pd df = pd.DataFrame(data=[["1/08/23","1/08/23","yy1"], ["1/08/23","1/08/23","yy2"], ["1/08/23","1/07/23","yy3"], ["1/07/23","1/07/23","yy4"], ["1/07/23", "1/06/23", "yy5"], ["1/07/23","1/07/23","yy6"], ["1/06/23","1/06/23","yy7"], ["1/06/23","1/05/23","yy8"], ["1/06/23","1/04/23","yy9"]], columns= ["EOM Date","Approve Date","Facility Id"])
期望输出
输出代码
filtered_df = pd.DataFrame(data=[["1/08/23","1/08/23","yy1"], ["1/08/23","1/08/23","yy2"], ["1/07/23","1/07/23","yy4"], ["1/07/23", "1/07/23", "yy6"], ["1/06/23","1/06/23","yy7"]], columns= ["EOM Date","Approve Date","Facility Id"])
输出表格
| EOM Date | Approve Date | Facility Id |
|---|---|---|
| 1/08/23 | 1/08/23 | yy1 |
| 1/08/23 | 1/08/23 | yy2 |
| 1/07/23 | 1/07/23 | yy4 |
| 1/07/23 | 1/07/23 | yy6 |
| 1/06/23 | 1/06/23 | yy7 |
循环实现方案
import pandas as pd # 原始数据集 df = pd.DataFrame(data=[["1/08/23","1/08/23","yy1"], ["1/08/23","1/08/23","yy2"], ["1/08/23","1/07/23","yy3"], ["1/07/23","1/07/23","yy4"], ["1/07/23", "1/06/23", "yy5"], ["1/07/23","1/07/23","yy6"], ["1/06/23","1/06/23","yy7"], ["1/06/23","1/05/23","yy8"], ["1/06/23","1/04/23","yy9"]], columns= ["EOM Date","Approve Date","Facility Id"]) # 初始化空列表存储符合条件的行 filtered_rows = [] # 遍历DataFrame的每一行 for index, row in df.iterrows(): # 判断EOM Date和Approve Date是否相等 if row["EOM Date"] == row["Approve Date"]: filtered_rows.append(row.tolist()) # 生成筛选后的DataFrame filtered_df = pd.DataFrame(filtered_rows, columns=df.columns) print(filtered_df)
说明
- 通过
df.iterrows()遍历原始数据集的每一行,获取行索引和行数据 - 逐行判断
EOM Date与Approve Date是否匹配,匹配则将该行转为列表加入filtered_rows - 最后用筛选后的行列表创建新的DataFrame,保持原列名不变
内容的提问来源于stack exchange,提问作者svenvuko
相关产品推荐
相关产品推荐

