我正在尝试pandas.DataFrame.rolling.apply()
在多列上使用滚动函数。Python 版本是 3.7,pandas 是 1.0.2。
import pandas as pd
#function to calculate
def masscenter(x):
print(x); # for debug purposes
return 0;
#simple DF creation routine
df = pd.DataFrame( [['02:59:47.000282', 87.60, 739],
['03:00:01.042391', 87.51, 10],
['03:00:01.630182', 87.51, 10],
['03:00:01.635150', 88.00, 792],
['03:00:01.914104', 88.00, 10]],
columns=['stamp', 'price','nQty'])
df['stamp'] = pd.to_datetime(df2['stamp'], format='%H:%M:%S.%f')
df.set_index('stamp', inplace=True, drop=True)
Run Code Online (Sandbox Code Playgroud)
'stamp'
是单调且唯一的,'price'
是双精度'nQty'
值且不包含 NaN,是整数且也不包含 NaN。
所以,我需要计算滚动的“质心”,即sum(price*nQty)/sum(nQty)
。
到目前为止我尝试过的:
df.apply(masscenter, axis = 1)
Run Code Online (Sandbox Code Playgroud)
masscenter
被单行调用 5 次,输出将类似于
price 87.6
nQty 739.0
Name: 1900-01-01 …
Run Code Online (Sandbox Code Playgroud)