gpt4 book ai didi

python - Pandas - 仅删除等于零的连续行

转载 作者:行者123 更新时间:2023-12-01 09:33:43 27 4
gpt4 key购买 nike

我有一个大型时间序列 df(250 万行),其中给定行中包含 0 个值,其中一些是合法的。但是,如果重复连续出现零值,我想将它们从我的 df 中删除。

示例:A 列包含[1,2,3,0,4,5,0,0,0,1,2,3,0,8,8,0,0,0,0,9] 我想从中间删除 [0,0,0][0,0,0,0] 并保留剩余的 0 创建一个新的 df [1,2,3,0,4,5,1,2,3,0,8,8,9]

删除之前零值的长度是必须设置的参数 - 在本例中> 2。

在 pandas 中是否有一种聪明的方法来做到这一点?

最佳答案

如果该行为 0 并且同一列中的上一行或下一行为 0,则您似乎想要删除该行。您可以使用 shift 查找上一个和下一个值并与当前值进行比较值如下:

result_df = df[~(((df.ColA.shift(-1) == 0) & (df.ColA == 0)) | ((df.ColA.shift(1) == 0) & (df.ColA == 0)))]
print(result_df)

结果:

    ColA
0 1
1 2
2 3
3 0
4 4
5 5
9 1
10 2
11 3
12 0
13 8
14 8
19 9

连续更新超过2次

以下示例位于 link ,添加新列来跟踪连续发生的情况,然后检查它以进行过滤:

# https://stackoverflow.com/a/37934721/5916727
df['consecutive'] = df.ColA.groupby((df.ColA != df.ColA.shift()).cumsum()).transform('size')
df[~((df.consecutive>10) & (df.ColA==0))]

关于python - Pandas - 仅删除等于零的连续行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49725407/

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