0

すべての列に切り替え時間のデータがあるわけではないため、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

しかし、これはデータフレームの行を削除していないようです。誰かが私が間違っていることを理解していますか?

4

2 に答える 2

2

問題はdrop、配列のような引数を取りlabels、タイムスタンプのみを渡すことです。ループの代わりにリスト内包表記も使用できるはずです。

indices = [pd.Timestamp(DSTvalue) for DSTValue  in hrsDSTadjust if DSTvalue in df.index]
df = df.drop(indices)
于 2013-08-06T16:03:59.827 に答える
0

ループは必要ありません。これを試してください:

df.drop(df.index[hrsDSTadjust])
于 2013-08-07T08:01:15.013 に答える