python - 删除重复超过 3 次的值,除了 Pandas DataFrame 中的第一个

标签 python pandas

我有一个 pandas DataFrame。例如,

        Date   Time    A     B   C 
0   1.1.2015  00:00    2    16  50  
1   1.1.2015  01:00    2     9  50   
2   1.1.2015  02:00    4     6  50   
3   1.1.2015  03:00    3     7  31  
4   1.1.2015  04:00    2     7  42    
5   1.1.2015  05:00    2     7  22    
6   1.1.2015  06:00    2     7  14  
7   1.1.2015  07:00    2    11  50    
8   1.1.2015  08:00    3    11  28   
9   1.1.2015  09:00    2    18  17  

我想删除连续重复超过 3 次但保留第一个的数字。我需要删除:

1- 第 5、6 和 7 行,因为 A 列中有四个 2,我不需要最后三个。

2- 第 4,5 和 6 行,因为 B 列中有四个 7

3- 第 1 行和第 2 行,因为 C 列中有三个 50

所以我想要的输出是这样的:

           Date   Time    A     B   C 
0      1.1.2015  00:00    2    16  50  
1      1.1.2015  03:00    3     7  31 
2      1.1.2015  08:00    3    11  28   
3      1.1.2015  09:00    2    18  17 

我搜索过类似的问题,我发现这个问题最相似: “Removing values that repeat more than 5 times in Pandas DataFrame ”,我试图根据我的问题对其进行调整,但我做不到(我是 python 的初学者)。谁能帮帮我?

谢谢。

最佳答案

itertools 的帮助下,你可以做到:

import itertools
import numpy as np

def f(serie):
    xs = []
    for el, gr in itertools.groupby(serie):
        x = np.repeat(True, len(list(gr)))
        if len(x)>=3:
           x[1:]=False
        xs.append(x)
    return np.concatenate(xs)

df[df[['A','B','C']].apply(f, axis=0).apply(np.all, axis=1)]

#Out[64]:
#       Date   Time  A   B   C
#0  1.1.2015  00:00  2  16  50
#3  1.1.2015  03:00  3   7  31
#8  1.1.2015  08:00  3  11  28
#9  1.1.2015  09:00  2  18  17

想法是使用效用函数 f 来计算列中连续元素的数量并创建相关联的所需 bool 掩码 - 例如,您可以检查 f(df ['A'])。然后使用 np.all 聚合这些 bool 掩码以过滤您的原始数据帧。

关于python - 删除重复超过 3 次的值,除了 Pandas DataFrame 中的第一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36177339/

相关文章:

python - 如何融化 0 和 1 的数据帧并仅保留 1

excel - pandas DataFrame.to_excel 保持excel文件格式

python - 使用 SQLAlchemy 生成数据库架构

python - Pandas :从另一个数据框中逐列相乘?

python - 是否有一个 groupby 函数可以创建一个从名称到下划线的新数据框?

python - 库存百分比变化的 Pandas Dataframe

jquery - 使用 Django/Python 将批量 .csv 数据上传到 webapp 的好方法是什么?

python - Snakemake:如何在 config.yml 文件中保存和访问示例详细信息?

python - 在用户数据中将 powershell 脚本发送到 Windows ec2

python - 如何用 pandas 计算从中午到中午的每日平均值?