How do I convert dates in a Pandas data frame to a 'date' data type?

前端 未结 10 2284
独厮守ぢ
独厮守ぢ 2020-11-28 02:56

I have a Pandas data frame, one of the column contains date strings in the format YYYY-MM-DD

For e.g. \'2013-10-28\'

At the moment th

10条回答
  •  醉话见心
    2020-11-28 03:33

    It may be the case that dates need to be converted to a different frequency. In this case, I would suggest setting an index by dates.

    #set an index by dates
    df.set_index(['time'], drop=True, inplace=True)
    

    After this, you can more easily convert to the type of date format you will need most. Below, I sequentially convert to a number of date formats, ultimately ending up with a set of daily dates at the beginning of the month.

    #Convert to daily dates
    df.index = pd.DatetimeIndex(data=df.index)
    
    #Convert to monthly dates
    df.index = df.index.to_period(freq='M')
    
    #Convert to strings
    df.index = df.index.strftime('%Y-%m')
    
    #Convert to daily dates
    df.index = pd.DatetimeIndex(data=df.index)
    

    For brevity, I don't show that I run the following code after each line above:

    print(df.index)
    print(df.index.dtype)
    print(type(df.index))
    

    This gives me the following output:

    Index(['2013-01-01', '2013-01-02', '2013-01-03'], dtype='object', name='time')
    object
    
    
    DatetimeIndex(['2013-01-01', '2013-01-02', '2013-01-03'], dtype='datetime64[ns]', name='time', freq=None)
    datetime64[ns]
    
    
    PeriodIndex(['2013-01', '2013-01', '2013-01'], dtype='period[M]', name='time', freq='M')
    period[M]
    
    
    Index(['2013-01', '2013-01', '2013-01'], dtype='object')
    object
    
    
    DatetimeIndex(['2013-01-01', '2013-01-01', '2013-01-01'], dtype='datetime64[ns]', freq=None)
    datetime64[ns]
    
    

提交回复
热议问题