python - Python - 输入数组的尺寸错误
问题描述
在编码方面,我是一个绝对的初学者,最近我发现了 talib。我一直在尝试计算 RSI,但遇到了错误。我一直在寻找互联网上的解决方案,就像我通常做的那样,但没有成功。我猜我的数据对于 talib.RSI 函数有错误的数据类型,但这就是我的知识范围。
如果有人能想出一个解决方案并对其进行一些扩展,那就太好了,这样我就可以在此过程中学到一些东西:-)
提前谢谢了,
马蒂
import pandas as pd
import talib
import numpy as np
data = pd.read_excel (r'name.xlsx')
df = pd.DataFrame(data, columns = ['close'])
RSI_PERIOD = 14
close_prices = pd.DataFrame(df, columns = ['close'])
np_close_prices = np.array(close_prices)
print(np_close_prices)
rsi = talib.RSI(np_close_prices, RSI_PERIOD)
print(rsi)
-------------------------------------------------- ------------------------- 12 print(np_close_prices) 13 ---> 14 rsi = talib.RSI 中的异常回溯(最近一次通话最后一次) (np_close_prices, RSI_PERIOD) 15 打印 (rsi)
~\anaconda3\lib\site-packages\talib_ init _.py in wrapper(*args, **kwargs) 25 26 if index is None: ---> 27 return func(*args, **kwargs) 28 29 #如果是 pandas,则使用 Series 的 float64 值,否则使用传递的值
talib._ta_lib.RSI() 中的 talib_func.pxi
talib._ta_lib.check_array() 中的 talib_func.pxi
例外:输入数组的尺寸错误
解决方案
@kcw78 感谢您的回复。在看到您的回复并设法找到答案之前,我又上网查找了一些。我不知道 lambda 是什么或它做了什么,但希望有一天我会发现并理解这是如何解决问题的:)
import pandas as pd
import talib
import numpy as np
RSI_PERIOD = 14
data = pd.read_excel (r'name.xlsx')
df = pd.DataFrame(data, columns = ['close'])
rsi = df.apply(lambda x: talib.RSI(x, RSI_PERIOD))
rsi.columns = ['RSI']
print(rsi)
推荐阅读
- laravel - Laravel 分页结果转换
- c++ - what is the real type of auto in c++ struct binding
- excel - Find the top 3 items in an array, with priority given to those higher on a list in the event of tie
- python - 通过从组数据集中旋转数组来计算持续时间
- winforms - netcore31 error with devexpress with winform
- eslint - 如何创建 Eslint 规则以仅验证资本常量变量
- c - 在C中将二进制数组转换为十进制和十六进制
- java - @Autowired 结果为 null
- linux - zip 命令不压缩 shell 脚本中的文件
- python - 如何从类中返回特定结果