首页 > 解决方案 > 在数据框中更改逗号分隔的日期格式 20,190,927?

问题描述

我有一个日期列为 20,190,927 的数据框,这意味着:2019/09/27。我需要将格式更改为 YYYY/MM/DD 或类似的东西。

我想像这样手动完成:

x = df_all['CREATION_DATE'].str[:2] + df_all['CREATION_DATE'].str[3:5] + "-" + \
    df_all['CREATION_DATE'].str[5] + df_all['CREATION_DATE'].str[7] + "-" + df_all['CREATION_DATE'].str[8:]

print(x)

这样做更有创意的方法是什么?可以用 datetime 模块完成吗?

标签: pythondataframedatetime

解决方案


我相信这就是你想要的。首先用空替换,yyyymmdd 格式,然后通过传递正确的格式将其更改为datetimewith 。pd.to_datetime一个班轮:

df['dates'] = pd.to_datetime(df['dates'].str.replace(',',''),format='%Y%m%d')

完整解释:

import pandas as pd
a = {'dates':['20,190,927','20,191,114'],'values':[1,2]}
df = pd.DataFrame(a)
print(df)

输出,这是原始数据框的样子:

        dates  values
0  20,190,927       1
1  20,191,114       2

df['dates'] = df['dates'].str.replace(',','')
df['dates'] = pd.to_datetime(df['dates'],format='%Y%m%d')
print(df)
print(df.info())

新格式化的数据框的输出:

       dates  values
0 2019-09-27       1
1 2019-11-14       2

打印.info()以确保我们具有正确的格式:

dates     2 non-null datetime64[ns]
values    2 non-null int64

推荐阅读