如何将DataFrame中datetime64类型Time列转为float64?解决KeyError
解决KeyError并将datetime列转为float64
第一步:排查KeyError问题
出现KeyError: 'Time'说明DataFrame里没有名为Time的列,大概率是列名拼写/格式问题:
- 先打印所有列名确认实际名称:
print(data.columns.tolist()) - 如果发现列名是小写
time、带空格Time或者其他变体,先重命名列:# 把'实际列名'替换成你查到的真实列名 data.rename(columns={'实际列名': 'Time'}, inplace=True)
第二步:将datetime64列转为float64
确认Time列存在且为datetime64[ns]类型后,按需求选择转换方式:
方式1:转成Unix时间戳(秒数,常用)
如果需要的是从1970-01-01 00:00:00以来的秒数(float类型):
# 先确保列是标准datetime类型(读取Excel时可能没自动识别,手动指定格式转换) data['Time'] = pd.to_datetime(data['Time'], format='%d/%m/%Y %H:%M') # 转换为float64格式的时间戳 data['Time'] = data['Time'].apply(lambda x: x.timestamp()).astype('float64')
方式2:直接转底层纳秒计数
如果需要的是datetime64[ns]对应的纳秒数(数值很大,单位为纳秒):
data['Time'] = data['Time'].values.astype('float64')
方式3:用pd.to_numeric批量转换
如果要确保所有列最终都是float64,可以用pd.to_numeric处理Time列,再统一转换其他列:
data['Time'] = pd.to_numeric(data['Time'], downcast='float') # 其他列如果是数值类型,统一转float64 data = data.astype('float64')
第三步:验证结果
执行完转换后,检查所有列的数据类型:
print(data.dtypes)
确认Time列和其他列均为float64即可。
内容的提问来源于stack exchange,提问作者Mohammed
相关产品推荐
相关产品推荐

