根据pandas数据帧索引删除数据行

时间:2016-02-20 03:45:43

标签: python pandas

所以我试图在我的熊猫数据框架中在一年内的某一天删除数据,我正在努力找出正确的代码来完成这个过程。我的数据包括6年的半小时观察(2001-2007)。理想情况下,我想在我的索引中删除对应于一天的48个观察结果(' 2004-02-29')。我尝试过的常识方法是以下方法:

    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

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

2 个答案:

答案 0 :(得分:1)

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

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

如果您想删除所有闰日,可以使用以下内容:

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

答案 1 :(得分:0)

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

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