2017-03-15 9 views
5

मुझे लगता है कि यह सरल होना चाहिए लेकिन मैंने जो देखा है वह तकनीक है जिसमें दो तिथियों के बीच अंतर निर्धारित करने के लिए डेटाफ्रेम दिनांक फ़ील्ड पर पुनरावृत्ति शामिल है। और मुझे इसके साथ परेशानी हो रही है। मैं MSSQL DATEDIFF से परिचित हूं इसलिए मैंने सोचा कि पांडस डेटाटाइम में कुछ समान होगा। मैं शायद यह करता हूं लेकिन मुझे यह याद आ रही है।पांडा - दो तिथियों के बीच महीनों की संख्या

क्या दो तारीखों (डेटाटाइम) के बीच एक पूर्णांक के रूप में महीनों की संख्या को फिर से शुरू करने की आवश्यकता के बिना निर्धारित करने का एक पांडोनिक तरीका है? ध्यान में रखते हुए कि संभावित रूप से लाखों पंक्तियां हैं इसलिए प्रदर्शन एक विचार है। ,

Date1   Date2   Months 
2016-04-07  2017-02-01 11 
2017-02-01  2017-03-05 1 

उत्तर

18
यहाँ

यह है मेरे दोस्त:: मैं एक नाव मिल

df['nb_months'] = (df.date2 - df.date1)/ np.timedelta64(1, 'M')

+0

नया स्तंभ जा रहा महीना -

दिनांकों datetime वस्तुओं रहे हैं और परिणाम यह चाहते हैं इसे चलाने पर। यह वही है जो आपने अपेक्षित था? – shavar

+1

बस अस्थिर ('int') bro –

+1

df ['month'] = ((df.date2 - df.date1)/np.timedelta64 (1, 'm') के साथ पूर्णांक में कनवर्ट करें। Astype (int) करता है छल। जल्दी से पूरा करता है। धन्यवाद भाई। – shavar

5
df.assign(
    Months= 
    (df.Date2.dt.year - df.Date1.dt.year) * 12 + 
    (df.Date2.dt.month - df.Date1.dt.month) 
) 

     Date1  Date2 Months 
0 2016-04-07 2017-02-01  10 
1 2017-02-01 2017-03-05  1 
+0

यह भी काम करता है। मुझे 10 और 1 महीने मिलते हैं। @ नोबॉई समाधान के साथ मुझे 9 और 1 मिलते हैं। तो यह एक समावेशी है। किसी भी विशेष परियोजना के लिए मेरी जरूरतों के आधार पर दोनों बहुत उपयोगी हैं। धन्यवाद। – shavar

+0

मैंने आपको स्पोर्ट्सशिप के लिए उकसाया :) –

+0

@Noobie मेरे लिए अच्छा लगता है। अब मुझे पता है कि आप एक अच्छे खेल हैं ... – piRSquared

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