Я пытаюсь получить геометрическое среднее в строках, DataFrame выглядит следующим образом:
PLTRNSU00013 PLSRBEX00014 PLATTFI00018 PLALMTL00023 PLAMBRA00013 PLAMICA00010 PLAMPLI00019 NL0000474351 PLAPATR00018 PLAPLS000016
2010-07-01 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2010-10-01 NaN NaN NaN NaN NaN NaN NaN 0.968237 NaN NaN
2011-01-01 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2011-04-01 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2011-07-01 0.979871 NaN NaN NaN NaN NaN NaN 1.00999 NaN NaN
2011-10-01 NaN NaN NaN NaN NaN 1.00737 NaN NaN NaN NaN
2012-01-01 NaN NaN NaN NaN NaN NaN NaN NaN 1.05766 NaN
2012-04-01 NaN NaN NaN NaN NaN NaN NaN NaN 0.979955 NaN
2012-07-01 NaN NaN NaN NaN NaN NaN NaN NaN 1.01718 NaN
2012-10-01 NaN 0.916302 NaN NaN NaN NaN NaN 0.979858 NaN NaN
Я не нашел никакого метода построения панд, поэтому я использовал gmean из scipy from scipy.stats.mstats import gmean
, нопри вызове в строке:
In [285]:gmean(DataFrame.loc['2015-10-01'])
Traceback (most recent call last):
File "<ipython-input-28-e9186c65a04d>", line 1, in <module>
gmean(DataFrame.loc['2015-10-01'])
File "D:\Python\lib\site-packages\scipy\stats\stats.py", line 305, in gmean
log_a = np.log(np.array(a, dtype=dtype))
AttributeError: 'float' object has no attribute 'log'
Я получаю исключение AttributeError
Я пытался избавиться от Nan
с помощью
In [287]: gmean(DataFrame.loc['2015-10-01'].dropna())
Traceback (most recent call last):
File "<ipython-input-29-e8807696d6be>", line 1, in <module>
gmean(DataFrame.loc['2015-10-01'].dropna())
File "D:\Python\lib\site-packages\scipy\stats\stats.py", line 305, in gmean
log_a = np.log(np.array(a, dtype=dtype))
AttributeError: 'numpy.float64' object has no attribute 'log'
Я могу сделать это вручную с помощью math
pow
метод, но конечно он очень неэффективен, работает только со скалярами.