将列转换为pandas.datetime或时间序列

时间:2018-09-20 18:00:35

标签: python pandas time-series

我有一个看起来像这样的数据框,但是有多个记录:

ID      Date
1       {'day': 20, 'year': 2018, 'month':9}

我正在尝试将“日期”列中的所有内容更改为熊猫时间序列格式。我试图通过以下操作循环遍历数据并更改每个条目,但是却收到一条错误消息,提示格式不匹配。

for index, rows in iterrows:

    x = row['Date']
    pd.to_datetime(pd.Series(x), format = 'day': %d, 'year': %y, \
     'month': %m, dayfirst = True)

运行df.to_dict()时,输出为:

{'ID': {0: '1'}, 'Date':{0: "{'day': 20, 'year': 2018, 'month': 9}"}}

2 个答案:

答案 0 :(得分:0)

步骤

  1. 将字典列转换为字典列表
  2. 将字典列表转换为DataFrame
  3. 将DataFrame传递给pd.to_datetime-这是很酷的部分!如果有适当命名的列,则pd.to_datetime接受DataFrame。碰巧,您的词典具有正确的键,这些键将在步骤2中被解析为列名。
  4. 分配给'Date'

df.assign(Date=pd.to_datetime(pd.DataFrame(df.Date.tolist())))

   ID       Date
0   1 2018-09-20

答案 1 :(得分:0)

我可以用以下代码解决它:

df['Date'] = pd.to_datetime(df['Date'],format="{'day': %d, 'year': %Y, 'month': %m}")

应该没有pd.Series。