首页 > 解决方案 > 熊猫更改列日期格式

问题描述

我在熊猫数据框中有如下列:

0    2018-04-06
1    2018-04-06
2    2018-04-09
3    2018-04-19
4    2018-04-19
5    2018-04-17

我想将此列转换为 yyyy/mm/dd ,为此我编写了如下代码:

def change_date_format(x):
    if x != 'nan' and x != '' and x != ' ' and x != 0:
        x = parse(x, dayfirst=True).strftime("%Y-%m-%d")
        return x
    else:
        return ''

read4['Column Name'] = read4['Column Name'].apply(lambda x : change_date_format(x)  )

但它的转换如下:

2018-06-04
2018-06-04
2018-09-04
2018-04-19
2018-04-19
2018-04-17

理想情况下应该是:

2018-04-06
2018-04-06
2018-04-09
2018-04-19
2018-04-19
2018-04-17

我如何强制它按上述方式工作。基本上它也应该考虑输入并且取决于它应该工作。

标签: pythonpython-3.xpandas

解决方案


我认为需要to_datetime使用参数errors='coerce'将不可解析的值转换为NaT, thenstrftime和 last replace

read4['Column Name'] = (pd.to_datetime(read4['Column Name'], errors='coerce')
                          .dt.strftime("%Y-%m-%d")
                          .replace('NaT', ''))
  Column Name
0  2018-04-06
1  2018-04-06
2  2018-04-09
3  2018-04-19
4  2018-04-19
5  2018-04-17

推荐阅读