gpt4 book ai didi

python-3.x - 无法转换为使用 DataFrame 和 math.exp 时给出的 Float 错误错误

转载 作者:行者123 更新时间:2023-12-04 09:24:55 24 4
gpt4 key购买 nike

我试图让更大的代码片段的一部分工作,因此已经提取了问题元素并创建了一个用于测试的迷你代码。

import math
import csv
import pandas as pd
from pandas import DataFrame
print(df)

data= pd.read_csv('miniDF.csv')
df=pd.DataFrame(data, columns=['x'])
df['y']=(12.775*math.exp(-1.494*df['x']))

print(df)
df 中的 x 列是 0.01,0.1,0.5,1.5,2.9 只是模仿我真实 DataFrame 的简单浮点值。如果我在代码中给等式一个单一的“x”值,数学可以正常工作,但是从 DataFrame 中提取 x 值时它不起作用。
我得到的 shell 输出和错误是:
     X
0 0.01
1 0.05
2 0.10
3 0.15
4 1.00
5 2.90
Traceback (most recent call last):
File "/Users/willhutchins/Desktop/minitest.py", line 11, in <module>
df['y']=(12.775*math.exp(-1.494*df['X']))
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pandas/core/series.py", line 131, in wrapper
raise TypeError("cannot convert the series to " "{0}".format(str(converter)))
TypeError: cannot convert the series to <class 'float'>
最终,我想像这样使用它:
df['SBTn']=np.where(df['Fr']<=(12.775*math.exp(-1.494*(df['Fr']))),1,df['SBTn'])
假设可以回答第一个问题,是否有人预见到在 np.where 版本中使用它会出现任何问题?

最佳答案

使用 np.exp 处理数组的方法,math.exp使用标量:

import numpy as np

df['y']=(12.775*np.exp(-1.494*df['x']))
print (df)
x y
0 0.01 12.585560
1 0.05 11.855479
2 0.10 11.002144
3 0.15 10.210230
4 1.00 2.867642
5 2.90 0.167779
您可以在 apply 中循环为 math.exp ,但它更慢:
df['y']=(12.775*df['x'].apply(lambda x: math.exp(-1.494*x)))
print (df)
x y
0 0.01 12.585560
1 0.05 11.855479
2 0.10 11.002144
3 0.15 10.210230
4 1.00 2.867642
5 2.90 0.167779
#6k rows
df = pd.concat([df] * 1000, ignore_index=True)

In [14]: %timeit df['y1']=(12.775*np.exp(-1.494*df['x']))
658 µs ± 19.8 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

In [15]: %timeit df['y2']=(12.775*df['x'].apply(lambda x: math.exp(-1.494*x)))
3.2 ms ± 133 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

关于python-3.x - 无法转换为使用 DataFrame 和 math.exp 时给出的 Float 错误错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63032137/

24 4 0