【发布时间】:2021-03-04 11:22:24
【问题描述】:
我可以在下面输入熊猫系列(收盘价的每日系列)来复制该功能吗?它计算每日连胜数。
cp = pd.Series(index=range(1,8+1), name='Closing_Price',
data=[20.00, 20.50, 20.75, 19.75, 19.50, 19.35, 19.35, 19.40])
1 20.00
2 20.50
3 20.75
4 19.75
5 19.50
6 19.35
7 19.35
8 19.40
解释是:
- 第 2 天的收盘价高于第 1 天的收盘价,因此我们有单日上涨
- 在第 3 天,价格再次收高,因此我们有 连续两天上涨,即 Streak Duration 值为 2。
- 在第 4 天,收盘价下跌,给我们带来单日下跌。 Streak Duration 值为负 (-1),因为价格变动是下跌,而不是上涨。
- 下降趋势在第 5 天和第 6 天继续,我们的Streak Duration 值反映为-2 和-3。
- 第 7 天收盘价没有变化,因此 Streak Duration 设置为 0,表示既不是上涨也不是下跌。
- 最后,在第 8 天收盘价再次上涨,使 Streak Duration 值回到 1。
我想我需要 cumsum() 和 groupby。类似的东西
def fxn(series):
x = series.diff()
但我不知道如何继续
【问题讨论】:
-
欢迎来到 Stack Overflow。请阅读如何问好questions。确保您的问题涵盖以下 3 个要素:1. 问题陈述 2. 您的代码(应该是 Minimal, Reproducible Example 3. 错误消息(最好是完整的 Traceback 以帮助其他人查看和提供反馈)。
-
,请不要发布代码、数据或 Tracebacks 的图像。将其复制并粘贴为文本,然后将其格式化为代码(选择它并输入
ctrl-k)...Discourage screenshots of code and/or errors。 ,, How to make good reproducible pandas examples -
but I'm not sure how to proceed- 所以不是讨论论坛或教程。 -
我已经解决了这个问题,但是 SO 要求您尝试尝试并发布您的代码以及卡在哪里。将其分解为多个步骤:a) 获取 Closing_Price 中的一系列差异。称其为
CPDiffb) 将CPDiff转换为+1/0/-1 值(正负号函数),称其为CPDiffSc) 然后才考虑CPDiffS是改变还是保持不变,在d) 最后之前你可以数一数条纹