I have a dataframe and I'd like to perform exponential calculation on a subset of rows in a column. I've tried three versions of code and two of them worked. But I don't understand why one version gives me the error.
import numpy as np
Version 1 (working)
np.exp(test * 1.0)
Version 2 (working)
np.exp(test.to_list())
Version 3 (Error)
np.exp(test)
It shows the error below:
AttributeError Traceback (most recent call last)
AttributeError: 'int' object has no attribute 'exp'
The above exception was the direct cause of the following exception:
TypeError Traceback (most recent call last)
<ipython-input-161-9d5afc93942c> in <module>()
----> 1 np.exp(pd_feature.loc[(pd_feature[col] > 0) & (pd_feature[col] < 700), col])
TypeError: loop of ufunc does not support argument 0 of type int which has no callable exp method
The test data is generated by:
test = pd.loc[(pd['a'] > 0) & (pd['a'] < 650), 'a']
The data in test is just:
0 600
2 600
42 600
43 600
47 600
60 600
67 600
Name: a, dtype: Int64
and its data type is:
<class 'pandas.core.series.Series'>
However, if I try to generate a dummy dataset, it works:
data = {'a':[600, 600, 600, 600, 600, 600, 600], 'b': ['a', 'a', 'a', 'a', 'a', 'a', 'a']}
df = pd.DataFrame(data)
np.exp(df.loc[:,'a'])
Any idea of why I see this error? Thank you very much.
test
is anobject
dtype array, Trytest.values.astype(float)
– Altiapply
, and replacelog10
withexp
. – Grain