पायथन: एक डेटाफ़्रेम में int में समयबद्धता को रूपांतरित करें


111

मैं एक पंडों के डेटा फ्रेम में एक कॉलम बनाना चाहूंगा जो एक टाइमडेल्टा कॉलम में दिनों की संख्या का पूर्णांक प्रतिनिधित्व है। क्या 'datetime.days' का उपयोग करना संभव है या क्या मुझे कुछ और मैनुअल करने की आवश्यकता है?

समयबद्ध स्तंभ

7 दिन, 23:29:00

दिन पूर्णांक स्तंभ

7


12
क्या आपने उपयोग करने की कोशिश की है timedelta.days?
13

जवाबों:


160

dt.daysविशेषता का उपयोग करें । इस विशेषता तक पहुँचें:

timedelta_series.dt.days

आप उसी तरह से secondsऔर microsecondsगुण भी प्राप्त कर सकते हैं ।


11
मुझे सरलता के लिए यह टिप्पणी पसंद है और किसी अन्य पुस्तकालय के आयात की आवश्यकता नहीं है।
निकब्रुनागेल

67

आप ऐसा कर सकते हैं, जहां tdआपकी समयबद्धता की श्रृंखला है। विभाजन दिन के डेल्टा में नैनोसेकंड डेल्टा को परिवर्तित करता है, और पूरे दिन के लिए अंतर ड्रॉप में परिवर्तित होता है।

import numpy as np

(td / np.timedelta64(1, 'D')).astype(int)

1
धन्यवाद! इसके अलावा 15 मिनट की खोज के बाद मुझे यह मिला। stackoverflow.com/questions/18215317/…
Asaf Hanish

क्या है /के बीच के लिए tdऔर np?
जेसन गोल

यह timedelta64 डिवीजन ऑपरेटर है। 1 दिन के समय में विभाजित करने से td में प्रतिनिधित्व किए गए दिनों की संख्या (संभवतः आंशिक) में परिणाम होता है। इस मामले में आवश्यक नहीं है, लेकिन यह वास्तव में उपयोगी है यदि आप कहते हैं कि आप कितने 15 मिनट के अंतराल पर काम करना चाहते हैं तो प्रतिनिधित्व करता है
डेविड वाटरवर्थ

22

Timedelta वस्तुओं है केवल पढ़ने के लिए उदाहरण के गुण .days, .secondsऔर .microseconds


6

यदि सवाल यह नहीं है कि "समयबद्धता के पूर्णांक रूप तक कैसे पहुंचा जाए?" लेकिन "डेटाफ़्रेम में टाइमडेल्टा कॉलम को इंट में कैसे बदलना है?" उत्तर थोड़ा अलग हो सकता है। एक्सेसर के अलावा .dt.daysआपको df.astypeया तो चाहिएpd.to_numeric

इन विकल्पों में से किसी को भी मदद करनी चाहिए:

df['tdColumn'] = pd.to_numeric(df['tdColumn'].dt.days, downcast='integer')

या

df['tdColumn'] = df['tdColumn'].dt.days.astype('int16')

नमस्ते, मैंने यह कोशिश की, लेकिन मुझे ValueError मिली: गैर-परिमित मान (NA या inf) को पूर्णांक में परिवर्तित नहीं कर सकता क्योंकि पांडा श्रृंखला में नाम हैं। क्या आप जानते हैं कि इसे किसको छांटना है ???
पल्बितो

दूसरे विकल्प ने मेरे लिए काम किया और तारीख मान प्रकार के थे timedelta64[ns]। यदि आपकी तिथियां NaN हैं, तो पहले पंडों के to_datetimeफ़ंक्शन का उपयोग करके उन्हें डेटाइम में कनवर्ट करें , फिर ऊपर दिए गए दूसरे विकल्प का उपयोग करें। अधिक जानकारी के लिए चेकआउट to_datetime
Onen साइमन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.