首页 > 解决方案 > 更改 df 列格式

问题描述

我有以下内容dict

diction= [
    {
        "name": "x",
        "no": 10,
        "buy_sell": "buy",
        "date": "10/07/2018"
    }
    ,
    {
        "name": "y",
        "no": 10,
        "buy_sell": "sell",
        "date": "11/07/2018"
    }]

这有一个不受欢迎的日期格式,%d/%m/%Y而我希望它是%Y-%m-%d.

为了更改格式,我尝试将其dict转换为 a pd.DataFrame,然后更改列的格式date(然后再次将其转换为 a dict),这是我尝试过的:

tabla = pd.DataFrame(diction)
tabla['date'] = pd.to_datetime(tabla['date'])
tabla['date'] = tabla['date'].dt.strftime('%Y-%m-%d')

我不知道为什么它似乎将日期与月份混淆并抛出输出:

  buy_sell       date      name    no
0      buy    2018-10-07     x      10
1     sell    2018-11-07     y      10

我想要的输出是:

  buy_sell       date      name    no
0      buy    2018-07-10     x      10
1     sell    2018-07-11     y      10

与格式%Y-%m-%d

标签: pythonpandas

解决方案


如果您只想更改字典中日期的格式,您可以简单地:

for d in diction:
    d['date'] = '{}-{}-{}'.format(d['date'][6:10], d['date'][3:5], d['date'][:2])

不需要熊猫和两次转换数据。


推荐阅读