【问题标题】:Get rid of repeated rows in pandas [duplicate]摆脱熊猫中的重复行[重复]
【发布时间】:2020-03-06 19:03:42
【问题描述】:

我有一些来自计数实验的 csv 数据,其中给了我一个测量时间以及该时间与上一个测量时间之间的计数数。出于某种原因,每当我有计数(有时我没有计数)时,该行的重复次数与计数的次数相同。这是一个基本示例:

time counts
t1 0
t2 1
t3 0
t4 3
t4 3
t4 3
t5 0

所以 t4 被重复 3 次,因为我有 3 个与之关联的计数,并且这发生在任意数量的计数(除了零,在这种情况下该行只出现一次)。在我的案例中还有更多列,但只有这 2 个才是重要的。有没有一种快速的方法来删除这些冗余行并使每个计数只出现一次,即:

time counts
t1 0
t2 1
t3 0
t4 3
t5 0

谢谢!

【问题讨论】:

    标签: python pandas csv


    【解决方案1】:

    使用删除重复:

    import numpy as np
    import pandas as pd
    
    df = pd.DataFrame({'time': ['t1', 't2', 't3', 't4', 't4', 't4', 't5'],
              'counts': [0, 1, 0, 3, 3, 3, 0]})
    
    print(df)
    
    
    print(df.drop_duplicates())
    time  counts
    0   t1       0
    1   t2       1
    2   t3       0
    3   t4       3
    6   t5       0
    

    【讨论】:

      【解决方案2】:

      删除重复项可以通过以下方式完成,只取某一列。

      df =  df.drop_duplicates('Column',keep='first')
      

      这将删除重复项并仅保留第一个值。

      df =  df.drop_duplicates('time',keep='first')
      

      您还可以按升序或降序排列数据以获得更准确的数据。

      df = df.sort_values(by=['Counts'], ascending=[False],na_position='last')
      df = df.drop_duplicates('time',keep='first')
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-06-27
        • 2021-11-26
        • 1970-01-01
        • 2014-09-25
        • 2015-04-06
        • 1970-01-01
        • 2017-05-28
        • 1970-01-01
        相关资源
        最近更新 更多