2
我初學者的Python的愛情正在經歷一個艱難審判...蟒蛇大熊貓溜動功能有兩個參數
我需要在一個固定長度的滾動窗口計算的函數(比方說:5)。該功能需要兩個參數。我很清楚答案here這幾乎是相同的,但我不斷收到錯誤。
我的代碼很簡單:
import numpy as np
import pandas as pd
import scipy as sp
import scipy.stats
df = pd.DataFrame({'A' : np.arange(20), 'B' : np.random.randint(0,20,20)})
def my_tau2(idx):
x = df.loc[idx, 'A'].astype('float')
y = df.loc[idx, 'B'].astype('float')
return scipy.stats.mstats.kendalltau(x, y)[0] ## breaks without this [0]
pd.rolling_apply(np.arange(len(df), dtype = np.dtype('int16')), 5, my_tau2)
,我不斷收到以下錯誤:
enter code
File "<ipython-input-6-d6cbc608d2f0>", line 7, in <module>
pd.rolling_apply(np.arange(len(df), dtype = np.dtype('int16')), 5, my_tau2)
File "D:\Users\502031217\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\stats\moments.py", line 584, in rolling_apply
kwargs=kwargs)
File "D:\Users\502031217\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\stats\moments.py", line 240, in ensure_compat
result = getattr(r, name)(*args, **kwds)
File "D:\Users\502031217\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\core\window.py", line 863, in apply
return super(Rolling, self).apply(func, args=args, kwargs=kwargs)
File "D:\Users\502031217\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\core\window.py", line 621, in apply
center=False)
File "D:\Users\502031217\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\core\window.py", line 560, in _apply
result = calc(values)
File "D:\Users\502031217\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\core\window.py", line 555, in calc
return func(x, window, min_periods=self.min_periods)
File "D:\Users\502031217\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\core\window.py", line 618, in f
kwargs)
File "pandas\algos.pyx", line 1831, in pandas.algos.roll_generic (pandas\algos.c:51581)
TypeError: a float is required
我一直在努力與和我要發狂了。 我的模塊版本是:
- numpy的:1.11.0
- SciPy的:0.17.1
- 大熊貓:0.18.1
- 蟒蛇:3.5.1
任何提示w.r.t.如何修正或以另一種方式計算這一點,我們衷心歡迎。
謝謝,馬裏安! scipy.stats.mstats.kendalltau(x,y)處的這個[0]是神奇的成分。我更新了代碼,以便它現在可以工作。實際上,不需要其他修改。我猜這是行不通的,因爲熊貓/ numpy無法識別返回對象的類型(scipy.stats.mstats_basic.KendalltauResult)。 – rpl
我想我們同時是老師和學生!這就是Stackoverflow的美麗!很高興我幫了忙。 –