2012-12-22 18 views
6

के मानों के समय क्षेत्र को कैसे परिवर्तित करें मेरे पास datetime64[ns] प्रकार के मानों वाला एक पांडा श्रृंखला है। तिथियां ईएसटी टाइमज़ोन में हैं, और मैं उन्हें यूटीसी टाइमज़ोन में परिवर्तित करना चाहता हूं।पांडस श्रृंखला

जैसे,

s=pd.Series(pd.date_range('2012-1-1 1:30',periods=3,freq='min')) 

कैसे UTC से s कन्वर्ट करने के लिए?

(नोट है कि मैं वास्तव date_range() का उपयोग नहीं करते, इसलिए इसके tz पैरामीटर का उपयोग कर एक विकल्प नहीं है।)

उत्तर

7

अद्यतन:

In [11]: s.dt.tz_localize('UTC') 
Out[11]: 
0 2012-01-01 01:30:00+00:00 
1 2012-01-01 01:31:00+00:00 
2 2012-01-01 01:32:00+00:00 
dtype: datetime64[ns, UTC] 
: हाल पांडा में, आप इस का प्रसारण करने के डीटी एक्सेसर उपयोग कर सकते हैं

यहाँ एक तरीका है (निर्भर करता है अगर TZ पहले से ही सेट किया गया है यह हो सकता है एक tz_convert बल्कि tz_localize से):

In [21]: from pandas.lib import Timestamp 

In [22]: s.apply(lambda x: x.tz_localize('UTC')) 
Out[22]: 
0 2012-01-01 06:30:00+00:00 
1 2012-01-01 06:31:00+00:00 
2 2012-01-01 06:32:00+00:00 
+0

यह काम करता है, लेकिन यह वास्तव में धीमा है। क्या ऐसा करने के लिए कोई प्रसारण-आधारित तरीका नहीं है? –

+1

हां! 'S.dt.tz_localize' का उपयोग करें (यह 2012 में उपलब्ध नहीं था :)) –

+0

क्या आप इसे एक नए उत्तर के रूप में पोस्ट कर सकते हैं ताकि मैं इसे अप-वोट कर सकूं? –