如何用Python/pandas按行比较多日期列并高亮每行最晚日期
Pandas DataFrame 按行高亮最晚日期解决方案
核心问题原因
- 之前使用
highlight_max时axis参数错误:axis=0是按列计算最大值,要按行匹配同一行的最晚日期需要设置为axis=1 - 类型报错是因为目标日期列中存在空值
NaT,Pandas在样式计算时会将含NaT的列强制转换为浮点类型,触发日期与浮点值比较的类型错误
完整可运行代码
import pandas as pd # 1. 先统一转换目标日期列格式,无效值转为NaT date_columns = ['CAC Clearance', 'ASB Results Received','Arch Assessment','Bio Assessment'] for col in date_columns: checks[col] = pd.to_datetime(checks[col], errors='coerce') # 2. 自定义行高亮规则 def highlight_row_latest(row): row_date_values = row[date_columns] # 取当前行最晚日期,自动忽略空值 latest_date = row_date_values.max() # 生成样式:等于最晚日期的单元格标黄,其余无样式 return ['background-color: yellow' if val == latest_date else '' for val in row_date_values] # 3. 应用样式输出 checks.style.apply(highlight_row_latest, axis=1, subset=date_columns)
补充说明
如果一行中存在多个相同的最晚日期,上述代码会将所有相同的最晚日期单元格同时高亮,符合常规业务需求。如果只需高亮第一个匹配的最晚日期,可以修改自定义函数的判断逻辑即可。
内容的提问来源于stack exchange,提问作者JQTs
相关产品推荐
相关产品推荐

