簡體   English   中英

加快時間戳操作

[英]Speeding up timestamp operations

以下轉換(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數據結構和方法?

這些都可以作為DatetimeIndex方法,這將是更快

df[column] = pd.DatetimeIndex(df[column]).tz_localize('UTC').tz_convert('US/Eastern')

注意:在0.15.0中,您可以訪問這些作為Series dt訪問器

df[column] = df[column].dt.tz_localize('UTC').tz_convert('US/Eastern')

我會使用date命令在Bash中嘗試一下。 對於例行轉換,日期證明比甚至更快。 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

你需要一個主bash腳本來運行python python pythonscript.py的第一部分。 然后,您將要從主./FILEA.sh &調用后台中的每個bash腳本。 這將單獨運行每個列並自動指定節點。 對於readarray之后的bash循環,我不是100%,這是正確的語法。 如果您使用的是Linux,請使用date -d @ item

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM