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

遍历numpy数组转换日期格式仅返回lambda对象如何解决

问题修复与正确实现

现有代码核心错误

  • 仅定义了lambda函数但未传入参数调用,所以打印输出的是函数对象本身而非执行结果
  • strptime的格式字符串配置错误:原日期格式为%Y-%m-%d(四位数年份、横杠分隔),你写的%y-%m,%d匹配的是两位数年份、逗号分隔月日,和实际格式完全不匹配
  • 列表推导式遍历的range(host_since.shape[0])拿到的是索引值,没有用索引提取host_since中的实际日期数据
  • np.datetime64类型无法直接传给strptime处理,需要先转换为Python原生datetime类型或者字符串类型

推荐实现方案

方案1:numpy向量化操作(性能最优,无需手动循环)

import numpy as np

# 原有数据读取代码保持不变
host_since = npListings[:,4].astype(np.datetime64) 

# 先转为字符串格式,再重组为目标日期格式
host_since_str = np.datetime_as_string(host_since, unit='D')
host_since_formatted = np.array([f"{d.split('-')[2]}.{d.split('-')[1]}.{d.split('-')[0]}" for d in host_since_str])

方案2:遍历转换(逻辑更直观)

from datetime import datetime
import numpy as np

host_since = npListings[:,4].astype(np.datetime64) 

# 先将numpy datetime64批量转为Python原生datetime对象
host_since_py = host_since.tolist()
# 遍历转换格式后转回numpy数组
host_since_formatted = np.array([d.strftime('%d.%m.%Y') for d in host_since_py])

print(host_since_formatted)

输出示例:

['24.09.2008' '02.12.2009' '20.11.2009' '23.03.2010' '13.05.2010'
 '13.05.2010' '25.05.2010' '23.07.2010' '22.12.2009' '08.08.2010']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 14:36:06