पांडा: दो तिथियों के बीच अंतर की गणना कैसे करें


आप पांडा डेटाफ़्रेम में दो तिथियों के बीच अंतर की गणना करने के लिए निम्नलिखित सिंटैक्स का उपयोग कर सकते हैं:

 df[' diff_days '] = (df[' end_date '] - df[' start_date ']) / np. timedelta64 ( 1 ,' D ')

यह विशेष उदाहरण दिनों के संदर्भ में समाप्ति_दिनांक और प्रारंभ_दिनांक कॉलम में दिनांकों के बीच अंतर की गणना करता है।

ध्यान दें कि हम विभिन्न इकाइयों में दिनांक अंतर की गणना करने के लिए timedelta64() फ़ंक्शन में “D” को निम्नलिखित मानों से बदल सकते हैं:

  • डब्ल्यू : सप्ताह
  • : महीना
  • Y : वर्ष

निम्नलिखित उदाहरण दिखाते हैं कि व्यवहार में पांडा डेटाफ़्रेम में दिनांक अंतर की गणना कैसे करें।

उदाहरण 1: दिनांक समय कॉलम के साथ दो तिथियों के बीच अंतर की गणना करें

मान लीजिए हमारे पास निम्नलिखित पांडा डेटाफ़्रेम हैं:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' start_date ': pd. date_range (start=' 1/5/2020 ', periods= 6 , freq=' W '),
                   ' end_date ': pd. date_range (start=' 6/1/2020 ', periods= 6 , freq=' M ')})

#view DataFrame
print (df)

  start_date end_date
0 2020-01-05 2020-06-30
1 2020-01-12 2020-07-31
2 2020-01-19 2020-08-31
3 2020-01-26 2020-09-30
4 2020-02-02 2020-10-31
5 2020-02-09 2020-11-30

#view dtype of each column in DataFrame
df. dtypes

start_date datetime64[ns]
end_date datetime64[ns]
dtype:object

चूँकि डेटाफ़्रेम के दोनों कॉलमों में पहले से ही datetime64 प्रकार है, हम प्रारंभ और समाप्ति तिथियों के बीच अंतर की गणना करने के लिए निम्नलिखित सिंटैक्स का उपयोग कर सकते हैं:

 import numpy as np

#create new columns that contains date differences
df[' diff_days '] = (df[' end_date '] - df[' start_date ']) / np. timedelta64 ( 1 ,' D ')
df[' diff_weeks '] = (df[' end_date '] - df[' start_date ']) / np. timedelta64 ( 1 ,' W ')
df[' diff_months '] = (df[' end_date '] - df[' start_date ']) / np. timedelta64 ( 1 ,' M ')
df[' diff_years '] = (df[' end_date '] - df[' start_date ']) / np. timedelta64 ( 1 ,' Y ')

#view updated DataFrame
print (df)

  start_date end_date diff_days diff_weeks diff_months diff_years
0 2020-01-05 2020-06-30 177.0 25.285714 5.815314 0.484610
1 2020-01-12 2020-07-31 201.0 28.714286 6.603832 0.550319
2 2020-01-19 2020-08-31 225.0 32.142857 7.392349 0.616029
3 2020-01-26 2020-09-30 248.0 35.428571 8.148011 0.679001
4 2020-02-02 2020-10-31 272.0 38.857143 8.936528 0.744711
5 2020-02-09 2020-11-30 295.0 42.142857 9.692191 0.807683

नए कॉलम में दिनों, सप्ताहों, महीनों और वर्षों के संदर्भ में प्रारंभ और समाप्ति तिथियों के बीच दिनांक अंतर शामिल हैं।

उदाहरण 2: स्ट्रिंग कॉलम के साथ दो तिथियों के बीच अंतर की गणना करें

मान लीजिए हमारे पास निम्नलिखित पांडा डेटाफ़्रेम हैं:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' start_date ': ['2020-01-05', '2020-01-12', '2020-01-19'],
                   ' end_date ': ['2020-06-30', '2020-07-31', '2020-08-31']})

#view dtype of each column
print ( df.dtypes )

start_date object
end_date object
dtype:object

चूँकि डेटाफ़्रेम में किसी भी कॉलम में datetime64 प्रकार नहीं है, इसलिए यदि हम तिथियों के बीच अंतर की गणना करने का प्रयास करेंगे तो हमें एक त्रुटि प्राप्त होगी:

 import numpy as np

#attempt to calculate date difference
df[' diff_days '] = (df[' end_date '] - df[' start_date ']) / np. timedelta64 ( 1 ,' D ')

TypeError : unsupported operand type(s) for -: 'str' and 'str'

तिथियों के बीच अंतर की गणना करने से पहले आपको प्रत्येक कॉलम को डेटाटाइम प्रारूप में परिवर्तित करने के लिए पहले pd.to_datetime का उपयोग करना होगा:

 import numpy as np

#convert columns to datetime
df[[' start_date ', ' end_date ']] = df[[' start_date ', ' end_date ']]. apply (pd. to_datetime )

#calculate difference between dates
df[' diff_days '] = (df[' end_date '] - df[' start_date ']) / np. timedelta64 ( 1 ,' D ')

#view updated DataFrame
print (df)

  start_date end_date diff_days
0 2020-01-05 2020-06-30 177.0
1 2020-01-12 2020-07-31 201.0
2 2020-01-19 2020-08-31 225.0

चूँकि हमने पहली बार प्रत्येक कॉलम को डेटाटाइम प्रारूप में परिवर्तित किया था, हम बिना किसी त्रुटि के तिथियों के बीच अंतर की सफलतापूर्वक गणना करने में सक्षम थे।

अतिरिक्त संसाधन

निम्नलिखित ट्यूटोरियल बताते हैं कि पांडा में अन्य सामान्य ऑपरेशन कैसे करें:

पंडों में दिनांक सीमा कैसे बनाएं
पंडों में तारीख से महीना कैसे निकालें
पंडों में टाइमस्टैम्प को दिनांक/समय में कैसे परिवर्तित करें

एक टिप्पणी जोड़ने

आपका ईमेल पता प्रकाशित नहीं किया जाएगा. आवश्यक फ़ील्ड चिह्नित हैं *