请问这个错误是什么原因造成的?

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:

img

rawdata.xlsx:

img

是因为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)))

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632