【发布时间】:2014-10-14 21:39:44
【问题描述】:
我需要使用 numpys weighted-average-function 重新采样一些数据 - 它只是不起作用...。
这是我的测试用例:
import numpy as np
import pandas as pd
time_vec = [datetime.datetime(2007,1,1,0,0)
,datetime.datetime(2007,1,1,0,1)
,datetime.datetime(2007,1,1,0,5)
,datetime.datetime(2007,1,1,0,8)
,datetime.datetime(2007,1,1,0,10)
]
df = pd.DataFrame([2,3,1,7,4],index = time_vec)
没有权重的普通重采样可以正常工作(此处建议使用 lambda 函数作为how 的参数:Pandas resampling using numpy percentile? 谢谢!):
df.resample('5min',how = lambda x: np.average(x[0]))
但是如果我尝试使用一些权重,它总是返回一个TypeError: Axis must be specified when shapes of a and weights differ:
df.resample('5min',how = lambda x: np.average(x[0],weights = [1,2,3,4,5]))
我尝试了许多不同数量的权重,但没有变得更好:
for i in xrange(20):
try:
print range(i)
print df.resample('5min',how = lambda x:np.average(x[0],weights = range(i)))
print i
break
except TypeError:
print i,'typeError'
如果有任何建议,我都会很高兴。
【问题讨论】:
标签: python numpy pandas weighted-average