import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import datetime
pf_value=pd.read_excel(r'C:\Users\Kaixin Feng\Downloads\rawdata.xlsx')
pf_value = pf_value.astype(float)
market = pd.read_excel(r'C:\Users\Kaixin Feng\Downloads\market.xlsx')
market = market.astype(float)
data = [pf_value,market]
for i in range(len(data)):
data[i].set_index(['date'],inplace=True)
data[i].iloc[:,0]=data[i].iloc[:,0].astype(float)
print(data[0])
结果出现:
File "C:\Users\Kaixin Feng\anaconda3\lib\site-packages\pandas\core\arrays\datetimelike.py", line 424, in astype
raise TypeError(msg)
TypeError: Cannot cast DatetimeArray to dtype float64
源数据:
market.xlsx:
rawdata.xlsx:
是因为pf_value = pf_value.astype(float)和market = market.astype(float)这两句代码,会对读取的数据框整体进行类型转换,而date列是DatetimeArray类型,不能转换为浮点数。解决办法是取出数值列转换即可,上述两句分别改成如下就可以了:
pf_value.iloc[:,1:] = pf_value.iloc[:,1:].astype(float)
market.iloc[:,1:]= market.iloc[:,1:].astype(float)
如果解答对你有帮助,请点击一下采纳按钮。
第一列时间那个不能转换成float ,就报错了
报错的那一行改成
.apply(lambda d: pd.to_datetime(str(d)))
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!