如何在海量数据帧上提高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
... ...

它包含一个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)

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

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

以上是如何在海量数据帧上提高lambda函数的性能的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>