我有一个带有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')