熊猫更改列日期格式

时间:2018-05-11 06:35:19

标签: python python-3.x pandas

我在pandas数据框中有如下列:

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

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

2 个答案:

答案 0 :(得分:2)

我认为需要to_datetime参数errors='coerce'才能将非可解析值转换为NaT,然后strftime和最后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

答案 1 :(得分:1)

也许您需要将dayfirst标记设置为False

x = parse(x, dayfirst=False).strftime("%Y-%m-%d")