Python按日期计算VWAP出现ValueError错误该如何解决?
问题根因
你自定义的Vwap函数调用了data.assign()方法,返回的是完整的DataFrame对象(包含所有原始列+新计算的Vwap列),而主函数中你试图把这个多列的DataFrame赋值给data['Vwap']单个列,列数量不匹配触发了对应ValueError。
修改方案
二选一即可:
方案1:调整Vwap函数返回值,仅返回计算后的VWAP序列
保留主函数赋值逻辑不变,修改Vwap函数为如下内容:
def Vwap(data): H = data.High L = data.Low C = data.Close V = data.volume return ((V * ((H+L+C)/3)).cumsum() / V.cumsum())
方案2:调整主函数赋值逻辑,直接接收完整DataFrame
不修改Vwap函数,把主函数中如下代码:
data['Vwap'] = data.groupby('Date', group_keys=False).apply(Vwap)
替换为:
data = data.groupby('Date', group_keys=False).apply(Vwap)
Vwap函数返回的已经是追加了Vwap列的完整数据集,直接覆盖原data变量即可。
内容的提问来源于stack exchange,提问作者GusC
相关产品推荐
相关产品推荐

