从时间索引的pandas数据帧中删除夏令时行

时间:2013-08-06 15:42:57

标签: python pandas timestamp time-series

我已经编写了以下函数来删除pandas数据框中夏令时的行,因为并非每列都有切换小时的数据:

def hrsDSTdelete (df):
    import pandas as pd    
    hrsDSTadjust = ['2000-03-26 02:00:00', ...  '2012-03-25 02:00:00', '2013-03-31 02:00:00']

    for DSTvalue in hrsDSTadjust:                          
        if DSTvalue in df.index :  
            df = df.drop(pd.Timestamp(DSTvalue)) 
            print 'DST hour: ', DSTvalue, " deleted!"         
    return df   
pass

由于这在删除单行时似乎有效,因此在尝试使用此循环时会出现以下错误消息:

  

exceptions.TypeError:'Timestamp'对象不可迭代

我也试过

df =  df.ix[DSTvalue].drop

但这似乎没有删除数据框中的行。 有没有人知道我做错了什么?

2 个答案:

答案 0 :(得分:2)

问题是drop takes an array-like argument labels,你只是传递了一个时间戳。您应该能够使用列表推导而不是循环:

indices = [pd.Timestamp(DSTvalue) for DSTValue  in hrsDSTadjust if DSTvalue in df.index]
df = df.drop(indices)

答案 1 :(得分:0)

你不需要循环,试试这个:

df.drop(df.index[hrsDSTadjust])