首页 > 解决方案 > data.rolling().mean() 在控制台中有效,但在运行时无效

问题描述

我尝试使用以下代码计算移动平均线: mav05 = dataT['close'].rolling(window=5).mean()在数据 DataFrame 中包含的价格列表的“收盘价”值上。然后我打算使用:dataTrad['mav05'] = pd.Series(mav05, index = dataTrad.index) 两条线在控制台中都可以正常工作。但是当我运行它时,我得到一个 SyntaxError: invalid syntax 消息。

然后我尝试dataT['mav05'] = dataT['close'].rolling(window=5).mean()替换这两行。我得到完全相同的错误消息。我做错了什么?感谢您的帮助 ;-)

完整代码:

import pandas as pd
import sqlite3 as sq
import numpy as np
from sqlalchemy import create_engine

# ====   Connecting to SQL DB and loading lists ============
connect = sq.connect('tradData.db')        
cursor = connect.cursor()
tS = pd.read_sql_query("SELECT * FROM TRBel20", connect)
dataTrad = tS.rename(columns={"Price Open": "open", "Price Close": "close", "Price High": "high", "Price Low": "low", "Volume": "volume" })
dataTrad.drop(dataTrad[pd.isnull(dataTrad["close"])].index, inplace=True)            # clean DB by dropping all rows where closing price is null
dataTrad.drop(dataTrad[pd.isnull(dataTrad["open"])].index, inplace=True)            # clean DB by dropping all rows where closing price is null

# ====   Adding technical parameters ============
# moving average
mav05 = dataTrad['close'].rolling(window=5).mean()
mav20 = dataTrad['close'].rolling(window=20).mean()
mav60 = dataTrad['close'].rolling(window=60).mean()
# bollinger band
rstd20 = dataTrad['close'].rolling(window=20).std()
bollUpperband = mav20 + 2 * rstd20
bollLowerband = mav20 - 2 * rstd20

dataTrad['mav05'] = pd.Series(mav05, index = dataTrad.index)
dataTrad['mav20'] = pd.Series(mav20, index = dataTrad.index)
dataTrad['BollUp'] = pd.Series(bollUpperband, index = dataTrad.index)
dataTrad['BollDown'] = pd.Series(bollLowerband, index = dataTrad.index)

标签: pythondataframerolling-computation

解决方案


发送给我的一个问题让事情变得清楚......我在上面放错了括号,代码停止不是因为错误的 rolling.mean() 语法而是因为以前的错误。非常感谢您提出的明智的私人问题,很抱歉打扰您;-)


推荐阅读