Python 将数据帧列类型从字符串转换为日期时间,dd/mm/yyyy格式

Python 将数据帧列类型从字符串转换为日期时间,dd/mm/yyyy格式,python,pandas,dataframe,datetime-format,python-datetime,Python,Pandas,Dataframe,Datetime Format,Python Datetime,如何将字符串的数据帧列(以dd/mm/yyyy格式)转换为日期时间?最简单的方法是使用: 它还为《欧洲时报》提供了一个dayfirst参数(但要小心) 这就是它的作用: In [11]: pd.to_datetime(pd.Series(['05/23/2005'])) Out[11]: 0 2005-05-23 00:00:00 dtype: datetime64[ns] 您可以传递特定的: 如果您的日期列是格式为“2017-01-01”的字符串 您可以使用astype将其转换为date

如何将字符串的数据帧列(以dd/mm/yyyy格式)转换为日期时间?

最简单的方法是使用:

它还为《欧洲时报》提供了一个
dayfirst
参数(但要小心)

这就是它的作用:

In [11]: pd.to_datetime(pd.Series(['05/23/2005']))
Out[11]:
0   2005-05-23 00:00:00
dtype: datetime64[ns]
您可以传递特定的:


如果您的日期列是格式为“2017-01-01”的字符串 您可以使用astype将其转换为datetime

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

如果您想要日精度而不是纳秒,也可以使用datetime64[D]

print(类型(df_launath['date'].iloc[0]))

屈服

与使用pandas.to_datetime时相同


您可以尝试使用其他格式,然后使用“%Y-%m-%d”,但至少可以这样做。

如果要指定复杂的格式,可以使用以下格式:

df['date_col'] =  pd.to_datetime(df['date_col'], format='%d/%m/%Y')
有关
格式的更多详细信息,请参见:

  • Python 2
  • Python 3

如果您的约会中混合了多种格式,请不要忘记设置
推断日期时间格式=True
,以简化生活

df['date']=pd.to_datetime(df['date'],expert_datetime\u format=True)

资料来源:

或者,如果您想要定制的方法:

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)

谢谢你的重播,我能定义它的格式吗?像“%d/%m/%Y”吗?非常appreciated@shootingstars可能会看到@shootingstars传递数组
DatetimeIndex(df['col'])。为了使_pydatetime()
能够工作。Nvm,我评论得太早了。用CopyWarning搜索
设置提供了足够的信息material@daneshjai与将列作为一个系列获取的单大括号相比,双大括号生成一个数据帧(只有一列)。可以使用自定义方法,而无需求助于
。apply
,它没有快速缓存,在转换十亿个值时会遇到困难。另一种选择是
col=pd.concat([pd.to_datetime(col,errors='concure',format=f),axis='columns').bfill(axis='columns').iloc[:,0]
如果您有多种格式的混合,则不应使用
interfer_datetime\u format=True
,因为这假定了一种格式。跳过这个论点。要了解原因,请尝试
pd.To_datetime(pd.Series(['1/5/2015 8:08:00 AM','1/4/2015 11:24:00 PM']),推断_datetime\u format=True)
有无
errors='concurve'
。看见
df['date_col'] =  pd.to_datetime(df['date_col'], format='%d/%m/%Y')
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)