python - 连续红色后获取 pandas 值

标签 python pandas

我有以下 df:

    Open    Close   Color   dfpct
2021-06-24  15757.200638    15762.962646    green   0.006598
2021-06-25  15760.081642    15835.699707    green   0.004427
2021-06-28  15797.890675    15859.462646    green   -0.002878
2021-06-29  15828.676661    15778.975098    red     -0.004189
2021-06-30  15803.825879    15761.562500    red     -0.001711
2021-07-01  15782.69419     15714.412354    red     -0.002640
2021-07-02  15748.553272    15700.587402    red     0.002691
2021-07-05  15724.570337    15808.937500    green   0.007133
2021-07-06  15766.753918    15836.800049    green   -0.001017
2021-07-07  15801.776984    15843.125000    green   0.003882
2021-07-08  15822.450992    15787.987793    red     -0.009556
2021-07-09  15805.219392    15685.412354    red     -0.002422
2021-07-12  15745.315873    15723.337402    red     0.000178
2021-07-13  15734.326638    15792.937256    green   0.007631
2021-07-14  15763.631947    15826.050049    green   0.002631
2021-07-15  15794.840998    15900.925049    green   0.004431
2021-07-16  15847.883023    15931.649902    green   -0.000050
2021-07-19  15889.766463    15762.825195    red     -0.010739
2021-07-20  15826.295829    15660.762451    red     -0.007637
2021-07-22  15743.52914     15780.462402    green   0.012279
2021-07-23  15761.995771    15845.262451    green   0.002022
2021-07-26  15803.629111    15841.024902    green   -0.001993
2021-07-27  15822.327007    15797.375000    red     -0.004929
2021-07-28  15809.851003    15687.975098    red     -0.002353
2021-07-29  15748.913051    15774.074951    green   0.004395
2021-07-30  15761.494001    15792.824707    green   -0.000976
2021-08-02  15777.159354    15871.900391    green   0.007746
2021-08-03  15824.529872    16035.887451    green   0.015461
2021-08-04  15930.208662    16230.100098    green   0.007938
2021-08-05  16080.15438     16285.824951    green   0.002202
2021-08-06  16182.989665    16275.662598    green   -0.003461
2021-08-09  16229.326132    16259.849854    green   0.001235
2021-08-10  16244.587993    16279.099854    green   0.001344
2021-08-11  16261.843923    16277.712402    green   0.000132
2021-08-12  16269.778163    16332.612793    green   0.005045
2021-08-13  16301.195478    16458.674561    green   0.010064
2021-08-16  16379.935019    16537.900391    green   0.002054
2021-08-17  16458.917705    16570.950195    green   0.003112
2021-08-18  16514.93395     16624.624512    green   -0.002754
2021-08-20  16569.779231    16429.650146    red     -0.007143
2021-08-23  16499.714689    16519.224609    green   0.002793
2021-08-24  16509.469649    16582.100098    green   0.007768
2021-08-25  16545.784873    16654.649902    green   0.000605
2021-08-26  16600.217388    16637.987305    green   0.000135
2021-08-27  16619.102346    16658.850098    green   0.004105
2021-08-30  16638.976222    16855.812500    green   0.013520
2021-08-31  16747.394361    17037.262207    green   0.011880
2021-09-01  16892.328284    17135.662598    green   -0.003266
2021-09-02  17013.995441    17158.687500    green   0.009247
2021-09-03  17086.34147     17284.586914    green   0.005190

我想要做的是在颜色列中的 3 个红色之后打印 dfpct 的值,然后打印 greendfpct 的值第二天。

例如。 日期 2021-06-292021-07-02 为红色。颜色已于 2021-07-02 切换为绿色。我想要的是 2021-07-06 上的值,即 -0.001017。

这真的很复杂,我想在这里做任何帮助,我们将不胜感激

最佳答案

尝试:

df[
    (df.groupby((df["Color"] != "red").cumsum()).cumcount().diff() <= -3)
    .shift()
    .fillna(False)
]

输出:

                    Open         Close  Color     dfpct
2021-07-06  15766.753918  15836.800049  green -0.001017
2021-07-14  15763.631947  15826.050049  green  0.002631

尝试使用groupbycumsumcumcountdiffshift >.

创建一个红色递增的系列,当发现绿色时,它会回落到零。找到下降量大于或等于-3的地方(代表三个连续的红色)。移动该系列以获取第一个绿色之后的值。

关于python - 连续红色后获取 pandas 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69052116/

相关文章:

python - 将程序中的 Python Pandas Dataframe 输出合并到一个 Dataframe 中

python - 如何用单个 NaN 替换 pandas 数据框中的多个 NaN 行

python - 在 python 中使用 PyPDF2 合并 pdf 文件时找不到 EOF 标记

python - 使用 OpenCV python 绑定(bind)索引 channel 数据(numpy 数组)

Python惰性迭代器

python - Pandas 在每行的列上进行整合

python - 连体衣 UnicodeDecodeError

Python AppEngine - 如何在 app.yaml 中传递查询字符串

python - Groupby 和重新采样时间序列,因此日期范围是一致的

python - 如何通过从所有其他列中减去第一列来创建新的数据框?