相关疑难解决方法(0)

在python中获取给定时区的DST边界

是否有可能使用pytz获得给定时区的DST边界?

python pytz

11
推荐指数
1
解决办法
2436
查看次数

如何在海量数据帧上提高 lambda 函数的性能

我有一个df超过数亿行的数据。

     latitude                    longitude                   time                    VAL     
0   -39.20000076293945312500    140.80000305175781250000    1972-01-19 13:00:00     1.20000004768371582031  
1   -39.20000076293945312500    140.80000305175781250000    1972-01-20 13:00:00     0.89999997615814208984 
2   -39.20000076293945312500    140.80000305175781250000    1972-01-21 13:00:00     1.50000000000000000000 
3   -39.20000076293945312500    140.80000305175781250000    1972-01-22 13:00:00     1.60000002384185791016 
4   -39.20000076293945312500    140.80000305175781250000    1972-01-23 13:00:00     1.20000004768371582031
... ...
Run Code Online (Sandbox Code Playgroud)

它包含一个time类型为datetime64UTC的列。下面的代码是创建一个新列isInDST来指示time本地时区是否处于夏令时。

df['isInDST'] = pd.DatetimeIndex(df['time']).tz_localize('UTC').tz_convert('Australia/Victoria').map(lambda x : x.dst().total_seconds()!=0)
Run Code Online (Sandbox Code Playgroud)

处理 15,223,160 行大约需要 400 秒。

有没有更好的方法以更好的性能实现这一目标?是vectorize一个更好的办法?

python numpy pandas

6
推荐指数
1
解决办法
117
查看次数

按小时分组,同时考虑夏令时

我正在查看每天24小时工作的工厂的班次数据.我想在每次班次变更时对数据进行分组,即6:00和18:00.到目前为止,我一直在尝试:

Data_Frame.groupby([pd.Grouper(freq='12H')]).count() 
Run Code Online (Sandbox Code Playgroud)

但是我已经意识到,由于频率设置为12H,它总是需要12个小时,包括夏令时.

不幸的是,即使时钟发生变化,它总是在6:00和18:00.这意味着实际上一年中有一个时间长度为11个小时,另一个时间长度为13个小时,因此在年中组中有1个小时.

我觉得这是一个基本的东西(夏令时),应该有一些方法告诉大熊猫它需要考虑夏令时.

我已经尝试将它从UTC改为欧洲/伦敦,但它仍需要12个小时的时间.

非常感谢

编辑:

我发现这样做的唯一方法就是,在使用groupby之前将数据拆分为3(在第一个小时更改之前,在小时更改之前,第二个小时更改之前),逐个使用groupby然后将它们重新组合在一起,但这很烦人且乏味所以比这更好的东西是非常感激的.

python datetime dst pandas-groupby

5
推荐指数
1
解决办法
115
查看次数

寻找 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)
Run Code Online (Sandbox Code Playgroud)

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

df['is_dst'] = df.index.is_dst()
Run Code Online (Sandbox Code Playgroud)

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

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

python pandas

4
推荐指数
1
解决办法
697
查看次数

标签 统计

python ×4

pandas ×2

datetime ×1

dst ×1

numpy ×1

pandas-groupby ×1

pytz ×1