gpt4 book ai didi

python - 如果相同的连续值,则按一天的剩余时间分组以显示 True

转载 作者:行者123 更新时间:2023-12-05 03:18:24 29 4
gpt4 key购买 nike

给定以下 DataFrame。当一天中出现两个连续的 “y” 时,如何添加一个显示 True for the rest of the day 的新列val 列(否则 False)。

  • 每天都会重置逻辑。

This接近但 True 应该在看到条件后的这一天的每一行。

代码

df_so = pd.DataFrame(
{
"val": list("yynnnyyynn")
},
index=pd.date_range(start="1/1/2018", periods=10, freq="6h"),
)

val
2018-01-01 00:00:00 y
2018-01-01 06:00:00 y
2018-01-01 12:00:00 n
2018-01-01 18:00:00 n
2018-01-02 00:00:00 n
2018-01-02 06:00:00 y
2018-01-02 12:00:00 y
2018-01-02 18:00:00 y
2018-01-03 00:00:00 n
2018-01-03 06:00:00 n

期望的输出

                    val  out
2018-01-01 00:00:00 y False
2018-01-01 06:00:00 y False
2018-01-01 12:00:00 n True
2018-01-01 18:00:00 n True
2018-01-02 00:00:00 n False
2018-01-02 06:00:00 y False
2018-01-02 12:00:00 y False
2018-01-02 18:00:00 y True
2018-01-03 00:00:00 n False
2018-01-03 06:00:00 n False

最佳答案

您可以使用 cummax 来检查条件在过去的某个时间点是否成立:

target = 2
df_so['out'] = (df_so['val'].eq('y')
.groupby(df_so.index.normalize())
.transform(lambda x: x.rolling(target).sum().shift().eq(target).cummax())
)

输出:

                    val    out
2018-01-01 00:00:00 y False
2018-01-01 06:00:00 y False
2018-01-01 12:00:00 n True
2018-01-01 18:00:00 n True
2018-01-02 00:00:00 n False
2018-01-02 06:00:00 y False
2018-01-02 12:00:00 y False
2018-01-02 18:00:00 y True
2018-01-03 00:00:00 n False
2018-01-03 06:00:00 n False

关于python - 如果相同的连续值,则按一天的剩余时间分组以显示 True,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73707204/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com