如何修复无法将系列转换为<class 'float'>

问题描述 投票:0回答:1

我有一个 Excel 数据 .xslx,有 4 列和许多行,我只想提取第 0 列(即我的波长)和第 3 列(即我的辐射),然后我根据该数据制作了一个 pyplots。我的档案看起来像这样

280.0   8.2000E-02  4.7309E-23  2.5361E-26
280.5   9.9000E-02  1.2307E-21  1.0917E-24
281.0   1.5000E-01  5.6895E-21  6.1253E-24
281.5   2.1200E-01  1.5662E-19  2.7479E-22
282.0   2.6700E-01  1.1946E-18  2.8346E-21
282.5   3.0300E-01  4.5436E-18  1.3271E-20

接下来我想使用 curve_fit 使用普朗克方程将黑体调整为 peplos。 但是当我使用曲线拟合时出现错误:

File"/Applications/Spyder.app/Contents/Resources/lib/python3.9/pandas/core/series.py", line 191, in wrapper
raise TypeError(f"cannot convert the series to {converter}")

 TypeError: cannot convert the series to <class 'float'>    

当程序尝试计算协方差时会出现此错误。 我尝试使用 astype(float) 更改我的辐射和波长,但它不起作用。

import pandas as pd
import math
import matplotlib.pyplot as plt
import numpy as np
from scipy.constants import h, c, k
from scipy.optimize import curve_fit
Data=pd.read_excel('Sun_Data.xlsx', sheet_name='Spectra',header=2) 
#fname='Sun_Data.txt' 
#A=np.loadtxt(fname)

wavelength=Data.iloc[:,0].astype(float)
rad=Data.iloc[:,3].astype(float)

#wave=list(wavelength)
#print(wave)
def funcion(wavelegth,T):
    planck=(2*math.pi*c**2*h)/(wavelength**5*(math.exp(h*c/(wavelength*k*T))-1))
    return planck

#print(funcion(wavelength, rad))
t,cov=curve_fit(funcion, wavelength, rad)
plt.plot(wavelength,rad, color='pink')
plt.show()

我认为我的错误是使用 pandas 读取数据,但我不确定,有人可以吗 帮助我。

python pandas covariance
1个回答
0
投票

看来你应该写

curve_fit(funcion, rad, wavelength)
而不是
curve_fit(funcion, wavelength, rad)

© www.soinside.com 2019 - 2024. All rights reserved.