DataFrame स्तंभ प्रकार को स्ट्रिंग से डेटाइम, dd / mm / yyyy प्रारूप में कनवर्ट करें


जवाबों:


475

उपयोग करने का सबसे आसान तरीका है to_datetime:

df['col'] = pd.to_datetime(df['col'])

यह dayfirstयूरोपीय समय के लिए एक तर्क भी प्रस्तुत करता है (लेकिन सावधान रहें यह सख्त नहीं है )।

यहाँ यह कार्रवाई में है:

In [11]: pd.to_datetime(pd.Series(['05/23/2005']))
Out[11]:
0   2005-05-23 00:00:00
dtype: datetime64[ns]

आप एक विशिष्ट प्रारूप पास कर सकते हैं :

In [12]: pd.to_datetime(pd.Series(['05/23/2005']), format="%m/%d/%Y")
Out[12]:
0   2005-05-23
dtype: datetime64[ns]

आपके रिप्ले के लिए धन्यवाद, क्या मैं इसके प्रारूप को परिभाषित कर सकता हूं? जैसे '% d /% m /% Y'? बहुत सराहना की
पेरी


1
सरणी DatetimeIndex(df['col']).to_pydatetime()को पास करने वाले @shootingstars को काम करना चाहिए।
एंडी हेडन

1
एनवीएम, मैंने बहुत जल्दी टिप्पणी की। के लिए खोज SettingWithCopyWarningपर्याप्त सामग्री देता है
Sundeep

2
@daneshjai डबल-ब्रेसेस एकल-ब्रेसिज़ की तुलना में एक डेटाफ़्रेम (केवल एक कॉलम के साथ) बनाता है जो स्तंभ को एक श्रृंखला के रूप में प्राप्त करता है।
एंडी हेडन

36

यदि आपका दिनांक स्तंभ '2017-01-01' प्रारूप का एक स्ट्रिंग है, तो आप इसे डेटाइम में परिवर्तित करने के लिए पांडा एस्टीज का उपयोग कर सकते हैं।

df['date'] = df['date'].astype('datetime64[ns]')

या आप डेटासिन64 [डी] का उपयोग करें यदि आप डे प्रिसेंस चाहते हैं और नैनोसेकंड नहीं

print(type(df_launath['date'].iloc[0]))

पैदावार

<class 'pandas._libs.tslib.Timestamp'> वही जब आप pandas.to_datetime का उपयोग करते हैं

आप इसे अन्य प्रारूपों के साथ आजमा सकते हैं, फिर '% Y-% m-% d' लेकिन कम से कम यह काम करता है।


29

यदि आप मुश्किल स्वरूपों को निर्दिष्ट करना चाहते हैं तो आप निम्नलिखित का उपयोग कर सकते हैं:

df['date_col'] =  pd.to_datetime(df['date_col'], format='%d/%m/%Y')

formatयहाँ पर अधिक जानकारी :


2

यदि आपके पास अपनी तारीख में प्रारूपों का मिश्रण है, तो infer_datetime_format=Trueजीवन को आसान बनाने के लिए सेट करना न भूलें

df['date'] = pd.to_datetime(df['date'], infer_datetime_format=True)

स्रोत: pd.to_datetime

या यदि आप एक अनुकूलित दृष्टिकोण चाहते हैं:

def autoconvert_datetime(value):
    formats = ['%m/%d/%Y', '%m-%d-%y']  # formats to try
    result_format = '%d-%m-%Y'  # output format
    for dt_format in formats:
        try:
            dt_obj = datetime.strptime(value, dt_format)
            return dt_obj.strftime(result_format)
        except Exception as e:  # throws exception when format doesn't match
            pass
    return value  # let it be if it doesn't match

df['date'] = df['date'].apply(autoconvert_datetime)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.