2025, Sep 29 01:31

pandas में NaT क्या है और datetime कॉलम में यह क्यों दिखता है

जानें pandas में NaT का मतलब, यह datetime और timedelta कॉलम में कब दिखता है, और क्यों इसे missing value माना जाता है. उदाहरणों के साथ स्पष्ट व्याख्या और गाइड लिंक, उपयोगी टिप्स भी.

pandas की datetime कॉलम में NaT दिखना पहली नजर में उलझा सकता है। यह एक विशेष मान जैसा लगता है — और वास्तव में ऐसा ही है: NaT का अर्थ है “Not a Time”। यह NaN का datetime और timedelta समकक्ष है, और तब दिखाई देता है जब समय-संबंधित मान अनुपस्थित हो।

कोड उदाहरण: NaT कहाँ दिखाई देता है

नीचे दिए गए DataFrame में datetime-जैसी एक कॉलम है, जिसमें एक मान गायब है। वही खोया हुआ मान NaT के रूप में दर्शाया गया है।

import pandas as pd
work_items = pd.DataFrame({
    "asset": ["windows", "doors", "hvac"],
    "state": ["done", "done", "delayed"],
    "finished_on": [
        pd.Timestamp("2025-08-20"),
        pd.Timestamp("2025-08-21"),
        pd.NaT,
    ],
})
print(work_items)

आउटपुट:

     asset    state finished_on
0  windows     done  2025-08-20
1    doors     done  2025-08-21
2     hvac  delayed        NaT

NaT का मतलब क्या है और यह क्यों दिखता है

NaT का अर्थ “Not a Time” है। यह datetime और timedelta डेटा के लिए missing value मार्कर है, ठीक वैसे ही जैसे NaN संख्यात्मक डेटा में कमी को दिखाता है। आप इसे datetime और timedelta कॉलमों में अनुपस्थित मानों के लिए देखेंगे।

Pandas 2.2+ में एक ज्ञात समस्या के कारण pandas.NaT का आधिकारिक संदर्भ पृष्ठ अभी “alias of NaT” जैसे कम-उपयोगी विवरण के साथ दिख सकता है। जब तक इसे ठीक नहीं किया जाता, परिभाषा missing-values मार्गदर्शिकाओं में स्पष्ट रूप से दर्ज है।

NaT, timedelta और datetime डेटा के लिए missing value है (नीचे देखें):

NaT : (N)ot-(A)-(T)ime, NaN का समय-संबंधी समकक्ष।

User guide यह भी बताती है कि विभिन्न dtypes के लिए pandas कौन-से sentinel मान उपयोग करता है, जिनमें datetime-जैसे प्रकारों के लिए NaT शामिल है।

Missing data के साथ काम करना

“Missing” माने जाने वाले मान

डेटा प्रकार के आधार पर, pandas अनुपस्थित मान (जिसे NA भी कहा जाता है) को दर्शाने के लिए अलग-अलग sentinel मान इस्तेमाल करता है। [...]

NaT NumPy np.datetime64, np.timedelta64 और PeriodDtype के लिए।

Pandas 2.2+ में एक डाक्युमेंटेशन बग भी दिखाई देता है, जिसके चलते pandas.NaT का संदर्भ पृष्ठ केवल “alias of NaT” जैसे संक्षिप्त पाठ के साथ रह जाता है। इस चर्चा को यहां ट्रैक किया जा रहा है: DOC: NaT - 'alias of NaT'; NA - 'alias of <NA>'। संक्षेप में, स्थानीय विवरण के लिए इंटरैक्टिव help इसे स्पष्ट रूप से बताती है:

In [5]: ?pd.NaT
Type:        NaTType
String form: NaT
File:        .../pandas/_libs/tslibs/nattype.cpython-311-x86_64-linux-gnu.so
Docstring:  
(N)ot-(A)-(T)ime, the time equivalent of NaN.
Examples
--------
>>> pd.DataFrame([pd.Timestamp("2023"), np.nan], columns=["col_1"])
        col_1
0  2023-01-01
1         NaT

समाधान: समय-संबंधी डेटा के लिए NaT को missing-value sentinel मानें

मुख्य बात यह समझना है कि pandas में समय-जैसे प्रकारों के लिए NaT निर्धारित missing-value मार्कर है। यह न त्रुटि है और न ही कोई स्ट्रिंग; यह अनुपस्थित datetime या timedelta मान के लिए मानक placeholder है। नीचे दिए गए help के न्यूनतम उदाहरण में दिखता है कि टाइमस्टैम्प और एक गायब प्रविष्टि का मिश्रण datetime-जैसी कॉलम में NaT के रूप में कैसे दिखता है:

import pandas as pd
import numpy as np
minimal = pd.DataFrame([pd.Timestamp("2023"), np.nan], columns=["col_dt"])
print(minimal)

आउटपुट:

        col_dt
0  2023-01-01
1         NaT

यह क्यों महत्वपूर्ण है

टाइम सीरीज़ और इवेंट डेटा में अक्सर अधूरे टाइमस्टैम्प होते हैं। NaT को “गायब समय” के रूप में पहचानना यह स्पष्ट करता है कि कुछ प्रविष्टियों में तारीख या अवधि क्यों नहीं दिखती, और यह आपको datetime तथा timedelta कॉलमों को समझने में मदद करता है ताकि इन मार्करों को साधारण स्ट्रिंग या संख्या न समझ बैठें।

मुख्य निष्कर्ष

NaT बस “Not a Time” है — NaN का समय-संबंधी समकक्ष। pandas की datetime और timedelta डेटा में जब भी कोई मान गायब होगा, आप इसे देखेंगे। अधिकृत शब्दावली और संदर्भ के लिए pandas की Missing values पेज और यूज़र गाइड के missing माने जाने वाले मान अनुभाग देखें, या pd.NaT की इंटरैक्टिव help खोलें।

यह लेख StackOverflow पर प्रश्न (लेखक: wjandrea) और wjandrea के उत्तर पर आधारित है।