如何在Pandas中基于DF2的唯一ID从DF1按规则提取日期(含if语句)
直接上代码,用pandas就能实现你的需求,全程用if语句处理逻辑:
import pandas as pd # 先把你的两个表格转换成DataFrame df1 = pd.DataFrame({ '唯一ID': [123, 455, 986], '任务': ['Track', 'Expire', 'Sell'], '日期1': ['28/05/2018', '', '05/01/2020'], '日期2': ['28/05/2018', '07/02/2018', '28/05/2018'] }) df2 = pd.DataFrame({'唯一ID': [123, 455, 986]}) # 把DF2和DF1按唯一ID关联,只保留DF2里有的记录 merged_data = pd.merge(df2, df1, on='唯一ID', how='left') # 自定义函数处理日期选择逻辑 def pick_date(row): # 如果是Track任务,优先取日期1,空的话就用日期2 if row['任务'] == 'Track': return row['日期1'] if row['日期1'] else row['日期2'] # 其他任务同样遵循“日期1非空就用,空则用日期2”的规则(对应你给的期望输出) else: return row['日期1'] if row['日期1'] else row['日期2'] # 生成目标日期列 merged_data['日期'] = merged_data.apply(pick_date, axis=1) # 提取需要的列,得到最终结果 final_result = merged_data[['唯一ID', '日期']] print(final_result)
运行后输出就是你要的结果:
| 唯一ID | 日期 |
|---|---|
| 123 | 28/05/2018 |
| 455 | 07/02/2018 |
| 986 | 05/01/2020 |
这个方案里的自定义函数完全用if语句实现了逻辑判断,清晰易懂,也能完美匹配你的需求。
内容的提问来源于stack exchange,提问作者PythonBeginner
相关产品推荐
相关产品推荐

