Python 加速时间戳操作

Python 加速时间戳操作,python,pandas,Python,Pandas,以下转换(ms->datetime->conver timezone)需要很长时间才能运行(4分钟),可能是因为我使用的是大数据帧: for column in ['A', 'B', 'C', 'D', 'E']: # Data comes in unix time (ms) so I need to convert it to datetime df[column] = pd.to_datetime(df[column], unit='ms') # Get times

以下转换(ms->datetime->conver timezone)需要很长时间才能运行(4分钟),可能是因为我使用的是大数据帧:

for column in ['A', 'B', 'C', 'D', 'E']:
    # Data comes in unix time (ms) so I need to convert it to datetime
    df[column] = pd.to_datetime(df[column], unit='ms')

    # Get times in EST
    df[column] = df[column].apply(lambda x: x.tz_localize('UTC').tz_convert('US/Eastern'))

有没有办法加快速度?我是否已经以最有效的方式使用了Pandas数据结构和方法?

我将使用date命令在Bash中尝试一下。事实证明,对于常规转换,Date甚至比呆呆地看着还要快。Python可能很难做到这一点

为了加快速度,请在一个临时文件中导出A列,在另一个临时文件中导出B列,等等。(您甚至可以在python中执行此操作)。然后并行运行5列

for column in ['A']:
  print>>thefileA, column
for column in ['B']:
  print>>thefileB, column
然后是bash脚本:

#!/usr/bin/env bash
readarray a < thefileA
for i in $( a ); do
    date -r item: $i
done
#/usr/bin/env bash
读取数组a

您需要一个bash主脚本在python
pythonscript.py
中运行第一部分。然后您需要在后台从master
/FILEA.sh&
调用每个bash脚本。它将单独运行每一列并自动指定节点。对于readarray之后的bash循环,我不认为这是100%正确的语法。如果您在linux上,请使用
date-d@item

这些方法作为DatetimeIndex方法提供,速度更快:

注意:在0.15.0中,您可以访问以下as系列:


谢谢,尽管在0.14.1上第一个选项似乎不适用于我。我在
tz_localize
中遇到一个错误,说
TypeError:index不是有效的DatetimeIndex或PeriodIndex
。Andy,我的
.dt
命名空间下没有
tz_localize
。这是否得到实施?这将非常有用。@user815423426这很奇怪,听起来该列没有正确地转换为日期,因此DatetimeIndex失败。。。您的to_日期时间行工作了吗?您检查了生成的数据类型了吗?它可能有点芬尼基。@Tomaugsurger我没有检查,我肯定我们应该添加它@user815423426 tzinfo是DatetimeIndex的属性,必须为None才能本地化。我想知道这是否会更好的作为github问题,如果这里有一个bug,或者新的问题,因为我认为它改变了原来的-不错-问题!
df[column] = pd.DatetimeIndex(df[column]).tz_localize('UTC').tz_convert('US/Eastern')
df[column] = df[column].dt.tz_localize('UTC').tz_convert('US/Eastern')