python – 寻找Pandas.DateTimeIndex.is_dst()

我有一个带有DateTimeIndex的DateFrame,即

import pandas as pd
dates = pd.date_range('2018-04-01', periods=96, freq='15T', tz='Australia/Sydney', name='timestamp')
df = dates.to_frame(index=False)
df.set_index(dates.name, inplace=True)

我想创建一个带有0/1指标列的列,在夏季时为1,冬季为0,但我找不到相关的dst / is_dst属性,即我想要类似的东西

df['is_dst'] = df.index.is_dst()

任何人都可以建议正确的方法/属性.或者我是否需要转换到不同的“日期时间”课程?

我需要一些通用的东西 – 即为任何时区工作,包括说“澳大利亚/布里斯班”,它没有夏令时.我宁愿不必解析时区偏移量并尝试确定它是否是夏季/冬季.

最佳答案 它在
pandas

df.index.map(lambda x : x.dst())

经过一个小的改变就可以产生布尔值

df.index.map(lambda x : int(x.dst().total_seconds()!=0))
Out[104]: 
Int64Index([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
            0, 0, 0, 0, 0, 0, 0, 0],
           dtype='int64', name='timestamp')
点赞