如何使用Numpy及.astype()方法将日期字符串转换为datetime类型?
用Numpy将自定义格式字符串日期转为datetime类型并存入字典的解决方案
我明白你想用Numpy替代Pandas来处理特定格式的字符串日期转换,还要把结果存入字典对吧?确实Numpy的日期处理API和Pandas不太一样,它没有像pd.to_datetime那样直接带format参数的一站式函数,但我们可以用np.strptime来完美解决这个问题。
核心思路
Numpy默认只识别ISO标准格式的日期字符串(比如YYYY-MM-DD),对于你这种%d%b%Y格式(例如01Jan2023)的自定义日期,需要先用np.strptime指定格式解析字符串,再得到datetime64类型的数组,最后和其他数据一起存入字典。
完整代码示例
假设你的原始数据是Pandas DataFrame,处理步骤如下:
import numpy as np import pandas as pd # 模拟你的原始DataFrame df = pd.DataFrame({ 'Signature': ['Sig_001', 'Sig_002', 'Sig_003'], 'AMT': [150.8, 320.5, 480.2], 'Role': ['Editor', 'Viewer', 'Admin'], 'date': ['05Mar2024', '18Jul2024', '22Oct2024'] }) # 1. 提取日期列转为Numpy数组,用np.strptime指定格式解析 date_datetime64 = np.strptime(df['date'].to_numpy(), "%d%b%Y") # 2. 将各列数据转为对应Numpy类型并存入字典 result_dict = { 'Signature': df['Signature'].to_numpy().astype(np.str), 'AMT': df['AMT'].to_numpy().astype(np.float32), 'Role': df['Role'].to_numpy().astype(np.str), 'date': date_datetime64 } # 验证结果类型 print("日期数组类型:", type(result_dict['date'])) print("日期数组dtype:", result_dict['date'].dtype)
关键说明
np.strptime会严格按照你传入的格式字符串(这里是%d%b%Y,对应日+英文缩写月份+年)解析日期字符串,返回的是datetime64类型的Numpy数组,完全符合你的需求。- 不要直接用
df['date'].astype(np.datetime64),因为这种方式无法识别非ISO标准的自定义日期格式,会直接报错。
内容的提问来源于stack exchange,提问作者CandleWax
相关产品推荐
相关产品推荐

