You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

含nan元素的日期列表拆分报错,求保留nan的解决方案

解决日期列表含'nan'时的拆分报错问题

这个问题我之前也碰到过!核心原因是当列表里的元素是'nan'时,elem.split()只会返回一个元素的列表,而你试图把它解包成date和time两个变量,这就触发了ValueError。要保留'nan'同时提取日期,有几种简单的解决办法:

方法一:显式判断'nan'元素

最直观的方式就是先检查当前元素是不是'nan',如果是直接加入结果列表,否则再执行拆分操作:

date_time_list =["2019-11-01 00:15:00+01", "2019-11-01 00:30:00+01", "2019-11-01 00:45:00+01", 'nan']
date_list = []
for elem in date_time_list:
    if elem == 'nan':
        date_list.append(elem)
    else:
        date, time = elem.split()
        date_list.append(date)
print(date_list)
# 输出: ['2019-11-01', '2019-11-01', '2019-11-01', 'nan']

方法二:用try-except捕获异常

如果你的列表里可能还有其他格式不正确的元素(不只是'nan'),用异常捕获会更健壮,能处理所有无法拆分为两个部分的情况:

date_time_list =["2019-11-01 00:15:00+01", "2019-11-01 00:30:00+01", "2019-11-01 00:45:00+01", 'nan']
date_list = []
for elem in date_time_list:
    try:
        date, time = elem.split()
        date_list.append(date)
    except ValueError:
        # 处理所有无法拆分的情况,比如'nan'或格式错误的字符串
        date_list.append(elem)
print(date_list)
# 输出: ['2019-11-01', '2019-11-01', '2019-11-01', 'nan']

方法三:用列表推导式+maxsplit参数(最简洁)

利用split(maxsplit=1)只拆分一次的特性,不管元素能不能拆分,直接取拆分后的第一个元素。对于有效日期,拆分后第一个元素是日期;对于'nan',拆分后还是只有一个元素,直接保留即可:

date_time_list =["2019-11-01 00:15:00+01", "2019-11-01 00:30:00+01", "2019-11-01 00:45:00+01", 'nan']
date_list = [elem.split(maxsplit=1)[0] for elem in date_time_list]
print(date_list)
# 输出: ['2019-11-01', '2019-11-01', '2019-11-01', 'nan']

这三种方法都能满足你的需求,你可以根据列表的实际情况选择最合适的一种~

内容的提问来源于stack exchange,提问作者123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 07:59:16