2013-05-13 8 views
9

मेरा आवेदन (एक सीएसवी में समाहित) निम्न रूप में है जो डेटा के साथ काम कर शामिल है:पांडा: Datetime सूचकांक के रूप में यूनिक्स काल टाइमस्टैम्प का उपयोग करते हुए

Epoch (number of seconds since Jan 1, 1970), Value 
1368431149,20.3 
1368431150,21.4 
.. 

वर्तमान में मैं का उपयोग कर सीएसवी numpy loadtxt विधि पढ़ें (कर सकते हैं आसानी से पांडस से read_csv का उपयोग करें)।

timestamp_date=[datetime.datetime.fromtimestamp(timestamp_column[i]) for i in range(len(timestamp_column))] 

मैं अपने DataFrame के लिए Datetime सूचकांक के रूप में timestamp_date सेट करके ऐसा पालन करें: इस प्रकार वर्तमान में मेरे श्रृंखला के लिए मैं टाइम स्टांप क्षेत्र परिवर्तित कर रहा हूँ। मैंने यह देखने के लिए कई जगहों पर खोज करने की कोशिश की कि क्या इन यूनिक्स युग टाइमस्टैम्प का उपयोग करने का एक तेज (इनबिल्ट) तरीका है, लेकिन कोई भी नहीं मिला। बहुत से अनुप्रयोग इस तरह के टाइमस्टैम्प शब्दावली का उपयोग करते हैं।

  1. क्या ऐसे टाइमस्टैम्प प्रारूपों को संभालने के लिए एक अंतर्निहित विधि है?
  2. यदि नहीं, तो इन प्रारूपों को संभालने का अनुशंसित तरीका क्या है?

उत्तर

15

datetime64[s] करने के लिए उन्हें कन्वर्ट:

df['datetime'] = pd.to_datetime(df["timestamp"], unit='s') 

इस विधि की आवश्यकता है पांडा 0.18 या बाद में:

np.array([1368431149, 1368431150]).astype('datetime64[s]') 
# array([2013-05-13 07:45:49, 2013-05-13 07:45:50], dtype=datetime64[s]) 
+1

वाह! नहीं पता था कि यह इतना आसान हो सकता है! सबसे अच्छा हिस्सा यह है कि यह एक वेक्टरकृत ऑपरेशन के अनुभव को बरकरार रखता है। –

+3

एनबी https://github.com/pydata/pandas/issues/3540 –

12

तुम भी पांडा to_datetime उपयोग कर सकते हैं।

1

तुम भी तो

pd.DatetimeIndex(df['timestamp']*10**9) 

*10**9 प्रारूप यह इस तरह टाइम स्टाम्प्स के लिए उम्मीद कर रहा है में कहते हैं की तरह पांडा DatetimeIndex उपयोग कर सकते हैं।

यह अच्छा है क्योंकि यह आपको श्रृंखला पर .date() या .tz_localize() जैसे कार्यों का उपयोग करने की अनुमति देता है।

संबंधित मुद्दे