从时间索引的pandas数据框中删除夏令时的行数[英] Deleting rows of daylight saving time from a time indexed pandas dataframe

本文是小编为大家收集整理的关于从时间索引的pandas数据框中删除夏令时的行数的处理方法,想解了从时间索引的pandas数据框中删除夏令时的行数的问题怎么解决?从时间索引的pandas数据框中删除夏令时的行数问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我编写了以下函数来删除 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

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

推荐答案

问题是 drop 接受一个类似数组的参数 labels,而你只是传递了一个时间戳.您也应该能够使用列表推导而不是循环:

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

本文地址:https://www.itbaoku.cn/post/1727795.html