gpt4 book ai didi

python - Pandas 有条件 True

转载 作者:行者123 更新时间:2023-11-28 21:31:13 25 4
gpt4 key购买 nike

假设我有 2 个数据框,值为 1,0(True 或 False)。令第一个为a,第二个为b。有没有办法避免循环,使得只要 a 为 true 且 b 为 true 时,在最后 n 个观察中的任何时间都返回 true?例如,假设 n=2,在下面的示例中,由于 2019-10-11 上的 a 为 true,我们将查看在 b 列,如果在最后一个 n 观察中也成立,则在 2019-10-11a 列有效或设置为 true。否则它将为零。

            a  b
2019-10-08 0 0
2019-10-09 0 0
2019-10-10 0 1
2019-10-11 1 0
2019-10-14 0 0
2019-10-15 0 0
2019-10-16 0 0

我的尝试如下,太慢了...

def compute_stats(z,n,df):
#print()
end_idx = z.iloc[0].Index

if (df.iloc[(end_idx-n):end_idx,1] * 1).sum() > 0:
return 1
else:
return 0

x = data1.cumsum()
x.name = "Signal"

df = pd.concat([data1,data2,x],axis=1)
df['Index'] = list(range(0,len(data1)))
tmp = df.groupby("Signal").apply(lambda z: compute_stats(z,n,df))

在我的尝试中,我实质上创建了一个按每个信号分组的单独 ID 列。从那里我做了一个分组。在我在 groupby 中调用的函数中,我只是回头看看 b 列中是否有 True 值。

谢谢

最佳答案

我们可以使用 ffilllimit

df.a.eq(1)&df.b.mask(df.b==0).ffill(limit=2).eq(1)
Out[205]:
2019-10-08 False
2019-10-09 False
2019-10-10 False
2019-10-11 True
2019-10-14 False
2019-10-15 False
2019-10-16 False
dtype: bool

关于python - Pandas 有条件 True,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58628515/

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