Python 如何对特定列中的每个数字进行数学计算

Python 如何对特定列中的每个数字进行数学计算,python,numpy,pandas,math,exp,Python,Numpy,Pandas,Math,Exp,我使用Python中的pandas.read\u Excel()导入了一个Excel文件。 然后我想对特定列中的每个数字进行数学计算,并生成一个新列。但有一个错误: TypeError:无法将序列转换为 我怎样才能解决这个问题?下面是我的代码 import pandas as pd import math N_DATA=pd.read_excel(r"path\datajl.xls",index_col='R') rchdecay=N_DATA['column_name'] rchdcayf=

我使用Python中的
pandas.read\u Excel()
导入了一个Excel文件。
然后我想对特定列中的每个数字进行数学计算,并生成一个新列。但有一个错误:

TypeError:无法将序列转换为

我怎样才能解决这个问题?下面是我的代码

import pandas as pd
import math

N_DATA=pd.read_excel(r"path\datajl.xls",index_col='R')
rchdecay=N_DATA['column_name']
rchdcayf=math.exp(-rchdecay*0.008)
我认为你需要:

样本:

import pandas as pd
import numpy as np

N_DATA = pd.DataFrame({'column_name':[1,2,3]})
print (N_DATA)
   column_name
0            1
1            2
2            3

rchdcayf=np.exp(-N_DATA['column_name']*0.008)
print (rchdcayf)
0    0.992032
1    0.984127
2    0.976286
Name: column_name, dtype: float64
或者
math.exp
,但速度较慢:

rchdcayf1=(-N_DATA['column_name']*0.008).apply(math.exp)
print (rchdcayf1)
0    0.992032
1    0.984127
2    0.976286
Name: column_name, dtype: float64
计时

len(df)=3

len(df)=3k

In [64]: %timeit np.exp(-N_DATA['column_name']*0.008)
1000 loops, best of 3: 214 µs per loop

In [65]: %timeit (-N_DATA['column_name']*0.008).apply(math.exp)
1000 loops, best of 3: 873 µs per loop
计时代码

import pandas as pd
import numpy as np
import math

N_DATA = pd.DataFrame({'column_name':[1,2,3]})
N_DATA = pd.concat([N_DATA]*1000).reset_index(drop=True)

rchdcayf=np.exp(-N_DATA['column_name']*0.008)
print (rchdcayf)

rchdcayf1=(-N_DATA['column_name']*0.008).apply(math.exp)
print (rchdcayf1)
In [64]: %timeit np.exp(-N_DATA['column_name']*0.008)
1000 loops, best of 3: 214 µs per loop

In [65]: %timeit (-N_DATA['column_name']*0.008).apply(math.exp)
1000 loops, best of 3: 873 µs per loop
import pandas as pd
import numpy as np
import math

N_DATA = pd.DataFrame({'column_name':[1,2,3]})
N_DATA = pd.concat([N_DATA]*1000).reset_index(drop=True)

rchdcayf=np.exp(-N_DATA['column_name']*0.008)
print (rchdcayf)

rchdcayf1=(-N_DATA['column_name']*0.008).apply(math.exp)
print (rchdcayf1)