如何从pandas date_range中删除日期

时间:2017-06-14 19:21:16

标签: python pandas date-range

所以我有像这样的pandas date_range

dates = pd.date_range(start='2005-1-1', end='2014-12-31', freq='D')

我想删除因闰年而产生的所有额外天数。

我做了一个for循环

for each in index:
    if each.month==2 and each.day==29:
        print(each) # I actually want to delete this item from dates

但我的问题是我不知道如何删除该项目。常规的python列表方法和函数不起作用。 我到处都看了。我查看了pandas.date_range的文档但没有找到任何内容

任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:5)

您可能希望使用drop删除行。

import pandas as pd
dates = pd.date_range(start='2005-1-1', end='2014-12-31', freq='D')

leap = []
for each in dates:
    if each.month==2 and each.day ==29:
        leap.append(each)

dates = dates.drop(leap)

答案 1 :(得分:1)

您可以尝试创建两个Series对象来分别存储月份和日期,并将它们用作蒙版。

TypeError: undefined is not an object (evaluating 'chart.renderTo.removeAttribute')

只是检查方法是否有效,如果您将dates = pd.date_range(start='2005-1-1', end='2014-12-31', freq='D') #All dates between range days = dates.day #Store all the days months = dates.month #Store all the months dates = dates[(days != 29) & (months != 2)] #Filter dates using a mask 条件更改为!=,我们就会看到您要消除的日期。

==

输出:

UnwantedDates = dates[(days == 29) & (months == 2)]

答案 2 :(得分:0)

您可以尝试:

dates = dates[~dates['Date'].str.contains('02-29')] 

代替Date,您必须将列的名称放在存储日期的位置。

您不必使用for循环,因此运行速度更快。