如何更改数据框列中的日期格式。
How do I change the date format in a dataframe column.
我在 DataFrame 中有一个日期格式为 yyyymmdd 的列,我需要将其永久更改为 yyyy-mm-dd。
我该怎么做?
鉴于您在评论中提供的信息,列值不能采用 yyyy-mm-dd
形式,因为列 dtype 是 int64
。
您可以将列 dtype 更改为 str
,但数据将无用(即您将无法对其进行任何日期计算,但 <
, >
应该仍然有效,但按字典顺序排列)。如果这仍然是您想要的,并假设 df
是数据框并且日期列名称是 date
:
def format_date_col(x):
x = str(x)
return '-'.join([x[:4], x[4:6], x[6:]])
# or maybe like that for better readability:
x = str(x)
return '{year}-{month}-{day}'.format(year=x[:4], month=x[4:6], day=x[6:])
df['date'] = df['date'].apply(format_date_col)
更好的方法是使用实际日期数据类型:
from datetime import datetime
def format_date_col(x):
return datetime.strptime(str(x), '%Y%m%d')
df['date'] = df['date'].apply(format_date_col)
print df['date'].dtype
>> datetime64[ns]
我在 DataFrame 中有一个日期格式为 yyyymmdd 的列,我需要将其永久更改为 yyyy-mm-dd。
我该怎么做?
鉴于您在评论中提供的信息,列值不能采用 yyyy-mm-dd
形式,因为列 dtype 是 int64
。
您可以将列 dtype 更改为 str
,但数据将无用(即您将无法对其进行任何日期计算,但 <
, >
应该仍然有效,但按字典顺序排列)。如果这仍然是您想要的,并假设 df
是数据框并且日期列名称是 date
:
def format_date_col(x):
x = str(x)
return '-'.join([x[:4], x[4:6], x[6:]])
# or maybe like that for better readability:
x = str(x)
return '{year}-{month}-{day}'.format(year=x[:4], month=x[4:6], day=x[6:])
df['date'] = df['date'].apply(format_date_col)
更好的方法是使用实际日期数据类型:
from datetime import datetime
def format_date_col(x):
return datetime.strptime(str(x), '%Y%m%d')
df['date'] = df['date'].apply(format_date_col)
print df['date'].dtype
>> datetime64[ns]