python - 生成多个变量的函数的分组依据
问题描述
我正在尝试使用技术分析库(TA-lib)计算一些分组项目: https ://mrjbq7.github.io/ta-lib/
AROON 等一些函数会生成两个变量,AR_UP 和 AR_DOWN。
如果不进行分组,我将使用以下内容:
dft['AR_UP'], dft['AR_DOWN'] = ta.AROON(dft['High'], dft['Low'], 14)
它会在 dft 中生成 AR_UP 和 AR_DOWN
但是,当我尝试应用分组时:
grouped=dft.groupby(["StockCode"]).apply(lambda x: (ta.AROON(x['High'], x['Low'], 14)))
这使我分为:
StockCode
ABA ([nan, nan, nan, nan, nan, nan, nan, nan, nan,...
ABP ([nan, nan, nan, nan, nan, nan, nan, nan, nan,...
ABW ([nan, nan, nan, nan, nan, nan, nan, nan, nan,...
ACQ ([nan, nan, nan, nan, nan, nan, nan, nan, nan,...
ACU ([nan, nan, nan, nan, nan, nan, nan, nan, nan,...
...
WTL ([nan, nan, nan, nan, nan, nan, nan, nan, nan,...
WZR ([nan, nan, nan, nan, nan, nan, nan, nan, nan,...
XPL ([nan, nan, nan, nan, nan, nan, nan, nan, nan,...
YBR ([nan, nan, nan, nan, nan, nan, nan, nan, nan,...
Z1P ([nan, nan, nan, nan, nan, nan, nan, nan, nan,...
Length: 282, dtype: object
谁能告诉我哪里出错了?
我还想将其重新分配回原始数据框,例如:
grouped=(grouped.reset_index()
.groupby("StockCode",as_index=False)
.apply(lambda x: x.assign (AR_UP, AR_DOWN=(ta.AROON(x['High'], x['Low'], 14))))
.set_index('index') )
这有没有可能?
谢谢!
解决方案
这行得通吗?它适用于我的示例函数,但我无法安装该软件包。也许它也适用于您的功能。groupby
其次apply
不适用于多个返回值。
import numpy as np
import pandas as pd
dft={'High': range(11,21),
'Low': range(1,11),
'StockCode':np.append(np.repeat("A", 6), np.repeat("B", 4))}
dft=pd.DataFrame(dft)
dft=dft.sort_values("StockCode")
def aroon(x, y, n):
return x/sum(x)*n, y/sum(y)*n
def my(x):
a, b=aroon(x["High"], x["Low"], 2)
return pd.DataFrame({"UP":a, "LOW":b})
grp=dft.groupby("StockCode").apply(lambda x: my(x))
dat=pd.concat([dft, grp], axis=1)
print dat
High Low StockCode LOW UP
0 11 1 A 0.095238 0.271605
1 12 2 A 0.190476 0.296296
2 13 3 A 0.285714 0.320988
3 14 4 A 0.380952 0.345679
4 15 5 A 0.476190 0.370370
5 16 6 A 0.571429 0.395062
6 17 7 B 0.411765 0.459459
7 18 8 B 0.470588 0.486486
8 19 9 B 0.529412 0.513514
9 20 10 B 0.588235 0.540541
推荐阅读
- c++ - C++中的结构模板
- javascript - 如何发送多个 AJAX 请求并将所有结果异步加入数组中?
- android - 从另一个活动返回时,片段变为空白
- r - 从 R 中的表中合并数据框
- javascript - 从数据属性中获取有关上一个和下一个滑块的信息
- css - CSS 不想在 Icon 下面看到文字
- ruby - ruby rmagick FailedToExecuteCommand `"gs"
- forms - Symfony 学说 DateTime 表单 TimeType
- linux - 使用 awk 创建具有特定列的平方根的新文件
- android - EmojiTextView 中的字体不起作用