gpt4 book ai didi

python - 如何根据列的值和该列中的下一个值过滤数据帧的行

转载 作者:行者123 更新时间:2023-12-01 07:15:28 25 4
gpt4 key购买 nike

我有一个名为“df”的数据框,并且该数据框中有一列我们可以称为“col”。

根据“col”中的值,我需要在数据帧中保留(以过滤)仅 col[i] 与值 col[i+2] 不同且与 col[i+ 相同的值1]。 Indeed 是列中相同值序列的倒数第二个。

如果我有:

Index  a   b   col
0 34 56 1
1 45 23 1
2 11 17 1
3 45 67 2
4 12 12 2
5 1 3 3
6 98 12 3

我需要:

1      45  23   1
3 45 67 2
5 1 3 3

我使用这个代码:

def penultimate(df, col):
d = pd.DataFrame()
for i in range(1, len(df.index)-2):
if((df[col].iloc[i] != df[col].iloc[i + 2]) and (df[col].iloc[i] == df[col].iloc[i + 1])):
d = d.append(df.loc[i])
return d

它可以工作,但是对于大数据帧来说太慢了。有没有一种方法可以更快地做到这一点?

谢谢

最佳答案

只需使用.shift两次并进行矢量化比较==

df[(df.col == df.col.shift(-1)) & (df.col != df.col.shift(-2))]
<小时/>
   Index   a   b  col
1 1 45 23 1
3 3 45 67 2
5 5 1 3 3

关于python - 如何根据列的值和该列中的下一个值过滤数据帧的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57997253/

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