[英]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.