Python 从时间索引数据帧中删除夏令时行
我编写了以下函数来删除pandas数据框中夏令时的行,因为并非每一列都有切换小时的数据:Python 从时间索引数据帧中删除夏令时行,python,pandas,timestamp,time-series,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:
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
但这似乎并没有删除数据帧中的行。
有人知道我做错了什么吗?问题是,你只传递了一个时间戳。您应该能够使用列表理解而不是循环:
indices = [pd.Timestamp(DSTvalue) for DSTValue in hrsDSTadjust if DSTvalue in df.index]
df = df.drop(indices)
你不需要循环,试试这个:
df.drop(df.index[hrsDSTadjust])
也许这会有帮助:不幸的是,这似乎不起作用。我收到此错误消息:异常。索引器错误:不支持的迭代器索引