Python 如何在dataframe中进行条件日期格式化

Python 如何在dataframe中进行条件日期格式化,python,pandas,csv,Python,Pandas,Csv,我有一个CSV文件,其日期值如“20181029”。请注意,此列也可以有空白值。我想将此列转换为日期数据类型,如(2018-10-29),对于空白列,我想在dataframe中有空白值 使用参数parse_dates调用read_csv方法。此参数的值应为csv文件中包含日期的列的名称: df = pd.read_csv('myfile.csv', parse_dates=['some_col']) 您也可以在读取文件后对其进行转换: import datetime as dt df['dat

我有一个CSV文件,其日期值如“20181029”。请注意,此列也可以有空白值。我想将此列转换为日期数据类型,如(2018-10-29),对于空白列,我想在dataframe中有空白值

使用参数parse_dates调用read_csv方法。此参数的值应为csv文件中包含日期的列的名称:

df = pd.read_csv('myfile.csv', parse_dates=['some_col'])

您也可以在读取文件后对其进行转换:

import datetime as dt
df['datetime'].apply(lambda x: dt.datetime.strptime(str(x), '%Y%m%d'))
编辑

正如@jezrael在评论中建议的,您也可以使用
pd.to\u datetime

df['datetime'] =pd.to_datetime(df['datetime'], format = '%Y%m%d', errors='ignore')
使用
dt.strftime(日期格式:str)
进行日期格式转换

比如说,

df['date\u column'].dt.strftime(“%Y-%m-%d”)

请尝试以下操作来处理空值

df['date_column'].map(lambda x: x.strftime('%Y-%m-%d') if x else "")

为什么不使用pd.to_datetime?很好的答案,在数据读入后,使用
parse_dates
pd.to_datetime
应该优先选择读取csv。