上面代码报错 File "C:\Users\THUNDE~1\AppData\Local\Temp/ipykernel_13868/4212125776.py", line 14 roe_data = pd.DataFrame(roe_data).set_index('day')['roe'] ^ SyntaxError: invalid syntax
时间: 2023-12-01 10:04:06 浏览: 139
这个错误是由于中括号写在了字符串的外面所导致的。你需要将 `set_index` 和中括号写在同一行,修改后的代码如下:
```
import jqdatasdk
import pandas as pd
# 获取平安银行股票代码
security = jqdatasdk.normalize_code('000001.XSHE')
# 获取平安银行 2015 年至 2019 年的 ROE 数据
roe_data = jqdatasdk.get_fundamentals(jqdatasdk.query(
jqdatasdk.valuation.code,
jqdatasdk.indicator.roe).filter(
jqdatasdk.valuation.code == security).order_by(
# 使用 day 或者 statDate 表示 ROE 数据的公布日期
jqdatasdk.indicator.day.desc()).limit(
None))
# 将 ROE 数据转换为 DataFrame 格式
roe_data = pd.DataFrame(roe_data).set_index('day')['roe']
# 输出 ROE 数据
print(roe_data)
```
相关问题
上面代码又报错TypeError Traceback (most recent call last) C:\Users\THUNDE~1\AppData\Local\Temp/ipykernel_13868/2136795466.py in <module> 3 4 # 获取平安银行 2015 年至 2019 年的 ROE 数据 ----> 5 roe_data = jqdatasdk.get_fundamentals(jqdatasdk.query( 6 jqdatasdk.indicator.code, 7 jqdatasdk.indicator.roe).filter( D:\Anaconda\lib\site-packages\jqdatasdk\utils.py in _wrapper(*args, **kwargs) 306 raise Exception("Please run jqdatasdk.auth first") 307 else: --> 308 return func(*args, **kwargs) 309 return _wrapper 310 TypeError: get_fundamentals() got an unexpected keyword argument 'start_date'
这个错误是由于 `get_fundamentals` 函数不支持 `start_date` 和 `end_date` 这两个参数所导致的。你需要将这两个参数删除,并将查询条件改为 `jqdatasdk.valuation.code == security`,修改后的代码如下:
```
import jqdatasdk
import pandas as pd
# 获取平安银行股票代码
security = jqdatasdk.normalize_code('000001.XSHE')
# 获取平安银行 2015 年至 2019 年的 ROE 数据
roe_data = jqdatasdk.get_fundamentals(jqdatasdk.query(
jqdatasdk.valuation.code,
jqdatasdk.indicator.roe).filter(
jqdatasdk.valuation.code == security).order_by(
# 使用 day 或者 statDate 表示 ROE 数据的公布日期
jqdatasdk.indicator.day.desc()).limit(
None))
# 将 ROE 数据转换为 DataFrame 格式
roe_data = pd.DataFrame(roe_data).set_index('day')['roe']
# 输出 ROE 数据
print(roe_data)
```
# 获取平安银行股票代码security = jqdatasdk.normalize_code('000001.XSHE')# 获取平安银行 2015 年至 2019 年的 ROE 数据roe_data = jqdatasdk.get_fundamentals(jqdatasdk.query( jqdatasdk.indicator.code, jqdatasdk.indicator.roe).filter( jqdatasdk.indicator.code == security,).order_by( # 使用 period_date 表示 ROE 数据的公布日期 jqdatasdk.indicator.period_date.desc()).limit( None), start_date='2015-01-01', end_date='2019-12-31')# 将 ROE 数据转换为 DataFrame 格式roe_data = pd.DataFrame(roe_data).set_index('pub_date')['roe']# 输出 ROE 数据print(roe_data)报错AttributeError Traceback (most recent call last)C:\Users\THUNDE~1\AppData\Local\Temp/ipykernel_13868/815225579.py in <module> 10 ).order_by( 11 # 使用 period_date 表示 ROE 数据的公布日期---> 12 jqdatasdk.indicator.period_date.desc() 13 ).limit( 14 NoneAttributeError: type object 'FinancialIndicatorDay' has no attribute 'period_date'
这个错误是由于聚宽 SDK 中的 `jqdatasdk.indicator` 模块下没有 `period_date` 这个属性所导致的。你可以将 `period_date` 改为 `day` 或者 `statDate`,这两个属性可以用来表示 ROE 数据的公布日期。修改后的代码如下:
```
import jqdatasdk
import pandas as pd
# 获取平安银行股票代码
security = jqdatasdk.normalize_code('000001.XSHE')
# 获取平安银行 2015 年至 2019 年的 ROE 数据
roe_data = jqdatasdk.get_fundamentals(jqdatasdk.query(
jqdatasdk.indicator.code,
jqdatasdk.indicator.roe).filter(
jqdatasdk.indicator.code == security,).order_by(
# 使用 day 或者 statDate 表示 ROE 数据的公布日期
jqdatasdk.indicator.day.desc()).limit(
None), start_date='2015-01-01', end_date='2019-12-31')
# 将 ROE 数据转换为 DataFrame 格式
roe_data = pd.DataFrame(roe_data).set_index('pub_date')['roe']
# 输出 ROE 数据
print(roe_data)
```
阅读全文