上面代码又报错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'
时间: 2024-02-14 16:12:39 浏览: 126
这个错误是由于 `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)
```
相关问题
TypeError Traceback (most recent call last) ~\AppData\Local\Temp/ipykernel_11604/1859500952.py in <module> ----> 1 data[data['gender'] == 'M'] TypeError: list indices must be integers or slices, not str
这个错误是因为你使用了列表索引来访问数据,而不是使用DataFrame索引。要使用DataFrame索引,首先需要将数据转换为DataFrame格式。你可以使用`pd.DataFrame()`函数将数据转换为DataFrame,然后再使用`[]`运算符来访问数据。
例如,假设你有一个名为`data`的列表,其中包含姓名、年龄和性别:
```python
data = [['Alice', 25, 'F'], ['Bob', 30, 'M'], ['Charlie', 35, 'M'], ['Dave', 40, 'M'], ['Eve', 45, 'F']]
```
你可以使用以下代码将其转换为DataFrame,并访问`gender`列中值为`'M'`的行:
```python
import pandas as pd
# 将数据转换为DataFrame
df = pd.DataFrame(data, columns=['name', 'age', 'gender'])
# 访问gender列中值为'M'的行
df[df['gender'] == 'M']
```
这将返回一个包含所有满足条件的行的DataFrame。如果要选择特定的列,可以在索引中指定列名,如下所示:
```python
df.loc[df['gender'] == 'M', ['name', 'age']]
```
这将返回一个包含所有满足条件的行,以及`name`和`age`列的DataFrame。
TypeError Traceback (most recent call last) ~\AppData\Local\Temp/ipykernel_2032/2458796969.py in <module> 1 # 创建数据集和数据加载器 ----> 2 train_dataset = paddle.io.TensorDataset(x_train_tensor, y_train_tensor) 3 train_loader = paddle.io.DataLoader(train_dataset, batch_size=10, shuffle=True) TypeError: __init__() takes 2 positional arguments but 3 were given
这个错误提示是因为 `paddle.io.TensorDataset` 的初始化函数只接受一个参数,也就是一个张量。你在创建 `TensorDataset` 对象时传入了两个张量,因此出现了参数数量不匹配的错误。
解决这个问题的方法是将 `x_train_tensor` 和 `y_train_tensor` 合并为一个张量,然后再创建 `TensorDataset` 对象。可以使用 `paddle.concat` 函数实现张量合并。
示例代码如下:
```python
import paddle
# 将 x_train_tensor 和 y_train_tensor 合并为一个张量
train_tensor = paddle.concat([x_train_tensor, y_train_tensor], axis=1)
# 创建 TensorDataset 和 DataLoader
train_dataset = paddle.io.TensorDataset(train_tensor)
train_loader = paddle.io.DataLoader(train_dataset, batch_size=10, shuffle=True)
```
这样就可以成功创建数据集和数据加载器了。
阅读全文