【发布时间】:2021-11-29 20:26:31
【问题描述】:
我正在尝试用更动态/数据驱动的 Python 脚本替换一些与时区更改相关的硬编码 SQL 查询。我有一个看起来像下面这个电子表格的数据集。 WEEK_START/DAY/MONTH 是夏令时开始的周、日和月(例如,堪培拉从四月的第一个星期日开始,而维也纳是三月的最后一个星期日)。结束变量格式相同,结束时显示。
这就是问题所在。我已经看到了针对特定用例的解决方案,例如这个月的最后一个星期日:
current_year=today.year
current_month=today.month
current_day=today.day
month = calendar.monthcalendar(current_year, current_month)
day_of_month = max(month[-1][calendar.SUNDAY], month[-2][calendar.SUNDAY])
print(day_of_month)
31
这告诉我这个月的最后一天是 31 号。我可以调整给定月份/场景的属性,但是如何为每一行(城市)创建一个 列 来检索每一行?也就是说,在不同日期更改时间的几个城市?我想如果我可以在 apply 函数中设置 day_of_month 中的属性,它会起作用,但是当我执行类似 weekday='SUNDAY' 之类的操作时,它会返回错误,因为字符串 'SUNDAY' 当然与日历属性 SUNDAY 不同。我的 SQL 查询按在同一天发生变化的城市分组,但理想情况下,任何人都可以根据需要编辑加载上述数据集的 CSV,然后每天运行一次脚本以查看今天是否介于夏令时。未来我们可能会增加新的城市。我有信心做到这一点,但对如何检索给定年份的日期非常迷茫。
我的备用,弹性较差的选项是查看潜在日期的不同列表(3 月的最后一个星期日,4 月的第一个星期日等),编写代码以预先检索每个日期(如上面的 sn-p以上),并以这种方式分配日期。我说这不太灵活,因为如果添加的城市不适合现有组以进行时间更改,则代码也需要更改。
那么stackoverflow,有没有办法通过apply或类似的东西在pandas中以数据驱动的方式做到这一点?提前致谢。
【问题讨论】:
-
我认为,一般来说,获取 DST 过渡日期的“数据驱动”方式是为城市分配时区;然后您可以从the IANA database 中提取每年的日期。
标签: python pandas dataframe csv datetime