【问题标题】:Dropping rows of data based off of pandas data frame index根据 pandas 数据框索引删除数据行
【发布时间】:2016-06-01 19:50:45
【问题描述】:

因此,我试图在我的 pandas 数据框中删除基于一年内某一天的数据,并且我正在努力找出正确的代码来执行此过程。我的数据包括 6 年(2001-2007 年)半小时一次的观察。所以理想情况下,我想在我的索引('2004-02-29')中删除与一天相对应的 48 个观察值。我尝试的常识方法是以下方法:

    len(data)
    122640

    data = data[data.index != '2004-02-29']

    len(data)
    122639

问题在于,此方法仅在指定的那一天删除一个观察值。我认为我错误地接近布尔语句,但我不知道如何解决它。有人可以在这个过程中帮助我吗?我将在下面的数据框中提供一个变量示例:

   2001-01-01 00:28:48         NaN
   2001-01-01 00:57:36         NaN
   2001-01-01 01:26:24         NaN
   2001-01-01 01:55:12         NaN
   2001-01-01 02:24:00         NaN
   2001-01-01 03:07:12         NaN
   ...............................
   2007-12-31 23:31:12         NaN
   2008-01-01 00:00:00         NaN
   Name: SFO3, dtype: float64

请注意,我缺少每年第一个月和最后一个月的数据。

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    两件事: 添加访问索引的日期组件; 使用 datetime.date 而不是字符串。

    data = data[data.index.date != datetime.date(2004,2,29)]
    

    如果你想删除所有闰日,你可以使用这样的东西:

    data = data[(data.index.month != 2) & (data.index.day != 29)]
    

    【讨论】:

      【解决方案2】:

      没有您的数据,但请尝试(假设您的索引是pd.DatetimeIndex):

      import datetime
      data[data.index.date != datetime.date(2004,2,29)]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-05-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-07
        • 2019-09-15
        • 2021-12-06
        相关资源
        最近更新 更多