Python 将数据帧列类型从字符串转换为日期时间,dd/mm/yyyy格式
如何将字符串的数据帧列(以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
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)