如何在包含NaN值的两列日期中获取最大值?并处理DF的日期校验需求
解决方案
1. 确保date列始终大于指定日期与pur_date列
操作步骤
- 先将指定日期转换为datetime类型,避免类型不匹配:
import pandas as pd specified_date = pd.to_datetime("2020-01-01") # 替换为你的目标指定日期 - 定位不符合条件的行:快速筛选出date列不满足要求的数据
invalid_rows = df[(df['date'] <= specified_date) | (df['date'] <= df['pur_date'])] print(invalid_rows) - 修正数据:根据需求选择处理方式
- 方式1:直接过滤掉不符合条件的行
df = df[(df['date'] > specified_date) & (df['date'] > df['pur_date'])] - 方式2:自动调整date列为指定日期与pur_date的最大值加1天(保证date始终更大)
df['date'] = df[['pur_date', specified_date]].max(axis=1) + pd.Timedelta(days=1)
- 方式1:直接过滤掉不符合条件的行
2. 从包含NaN值的两列日期数据中获取最大值
pandas的max()方法会自动忽略NaN值,直接对日期列计算即可:
操作步骤
- 确保目标列是datetime类型(若未转换):
df['date_col1'] = pd.to_datetime(df['date_col1']) df['date_col2'] = pd.to_datetime(df['date_col2']) - 计算每行的最大日期,生成新列:
df['max_date'] = df[['date_col1', 'date_col2']].max(axis=1)
示例效果
| date_col1 | date_col2 | max_date |
|---|---|---|
| 2023-01-01 | NaN | 2023-01-01 |
| NaN | 2023-05-01 | 2023-05-01 |
| 2023-03-01 | 2023-04-01 | 2023-04-01 |
| NaN | NaN | NaN |
内容的提问来源于stack exchange,提问作者arawind73
相关产品推荐
相关产品推荐

