आप tz_localizeटाइमस्टैम्प या डेटाइम टाइमेक्स टाइमजोन को अवगत कराने के लिए फ़ंक्शन का उपयोग कर सकते हैं , लेकिन आप इसके विपरीत कैसे कर सकते हैं: आप अपने टाइमज़ोन को संरक्षित करते हुए टाइमस्टैम्प जागरूक टाइमस्टैम्प को भोले में कैसे बदल सकते हैं?
एक उदाहरण:
In [82]: t = pd.date_range(start="2013-05-18 12:00:00", periods=10, freq='s', tz="Europe/Brussels")
In [83]: t
Out[83]:
<class 'pandas.tseries.index.DatetimeIndex'>
[2013-05-18 12:00:00, ..., 2013-05-18 12:00:09]
Length: 10, Freq: S, Timezone: Europe/Brussels
मैं किसी को भी इसे सेट करके टाइमज़ोन को निकाल सकता था, लेकिन फिर परिणाम यूटीसी (12 बजे 10 हो गया) में बदल जाता है:
In [86]: t.tz = None
In [87]: t
Out[87]:
<class 'pandas.tseries.index.DatetimeIndex'>
[2013-05-18 10:00:00, ..., 2013-05-18 10:00:09]
Length: 10, Freq: S, Timezone: None
वहाँ एक और तरीका है कि मैं एक DateTimeIndex को समय-समय पर भोले में परिवर्तित कर सकता हूं, लेकिन समय-सीमा को संरक्षित करते हुए इसे सेट किया गया था?
कारण के बारे में कुछ संदर्भ मैं यह पूछ रहा हूं: मैं टाइमज़ोन भोले समय के साथ काम करना चाहता हूं (टाइमज़ोन के साथ अतिरिक्त परेशानी से बचने के लिए, और मुझे उस मामले की आवश्यकता नहीं है जो मैं काम कर रहा हूं)।
लेकिन किसी कारण से, मुझे अपने स्थानीय समयक्षेत्र (यूरोप / ब्रुसेल्स) में एक टाइमज़ोन-जागरूक समय से निपटना पड़ता है। जैसा कि मेरे सभी अन्य डेटा टाइमज़ोन भोले हैं (लेकिन मेरे स्थानीय समयक्षेत्र में दर्शाए गए हैं), मैं इस समय को इसके साथ आगे काम करने के लिए भोली में बदलना चाहता हूं, लेकिन इसे मेरे स्थानीय समय क्षेत्र में भी प्रस्तुत किया जाना है (इसलिए सिर्फ टाइमज़ोन जानकारी निकालें) उपयोगकर्ता-दृश्यमान समय को यूटीसी में परिवर्तित किए बिना )।
मुझे पता है कि समय वास्तव में यूटीसी के रूप में आंतरिक रूप से संग्रहीत होता है और जब आप इसका प्रतिनिधित्व करते हैं तो केवल एक और टाइमज़ोन में परिवर्तित हो जाता है, इसलिए जब मुझे इसे "delocalize" करना होता है तो किसी प्रकार का रूपांतरण होना चाहिए। उदाहरण के लिए, अजगर डेटाइम मॉड्यूल के साथ आप टाइमजोन को इस तरह "हटा" सकते हैं:
In [119]: d = pd.Timestamp("2013-05-18 12:00:00", tz="Europe/Brussels")
In [120]: d
Out[120]: <Timestamp: 2013-05-18 12:00:00+0200 CEST, tz=Europe/Brussels>
In [121]: d.replace(tzinfo=None)
Out[121]: <Timestamp: 2013-05-18 12:00:00>
इसलिए, इसके आधार पर, मैं निम्नलिखित कार्य कर सकता हूं, लेकिन मुझे लगता है कि बड़े समय के साथ काम करते समय यह बहुत कारगर नहीं होगा:
In [124]: t
Out[124]:
<class 'pandas.tseries.index.DatetimeIndex'>
[2013-05-18 12:00:00, ..., 2013-05-18 12:00:09]
Length: 10, Freq: S, Timezone: Europe/Brussels
In [125]: pd.DatetimeIndex([i.replace(tzinfo=None) for i in t])
Out[125]:
<class 'pandas.tseries.index.DatetimeIndex'>
[2013-05-18 12:00:00, ..., 2013-05-18 12:00:09]
Length: 10, Freq: None, Timezone: None