Pandas处理含缺失值多格式日期列的加密货币利润计算问题
Pandas 混合日期格式处理解决方案
1 避免缺失日期的行被删除
- 首先排查代码中是否存在
dropna(subset=['Date'])、df = df[df['Date'].notna()]这类主动过滤空日期的逻辑,直接删除对应过滤代码即可 - 用
pd.to_datetime()转换日期时,指定errors='coerce'参数,缺失、无效的日期会被转换为pd.NaT类型占位,不会触发异常或隐式过滤
2 正确识别两种混合格式的日期
针对「日-月-年数字格式、英文月日年格式」混合的场景,可以用dateutil的通用解析器兼容处理,避免自动识别时日月混淆:
- 先导入依赖:
from dateutil.parser import parse - 自定义日期转换函数:
def convert_date(date_val): # 先处理空值场景,直接返回NaT占位 if pd.isna(date_val) or str(date_val).strip() in ['', 'NA', 'nan']: return pd.NaT date_str = str(date_val).strip() # 优先按日-月-年规则解析,避免数字格式下日月识别颠倒 return parse(date_str, dayfirst=True)
- 应用到Date列:
df['Date'] = df['Date'].apply(convert_date)
3 统一为标准日期格式
所有有效日期都转为datetime类型后,可按需求统一为指定字符串格式,比如常用的ISO标准格式YYYY-MM-DD:
# 格式转换,原来的NaT会生成NaT字符串,可按需替换为空或其他占位符 df['Date'] = df['Date'].dt.strftime('%Y-%m-%d').replace('NaT', '')
如果不需要转字符串,直接保留datetime类型即可,Pandas内部运算时会自动按统一标准处理
内容的提问来源于stack exchange,提问作者hbaromega
相关产品推荐
相关产品推荐

