【问题标题】:Datetime transformation for column in data frame Python数据框Python中列的日期时间转换
【发布时间】:2022-01-19 21:28:39
【问题描述】:

我想将不同的日期格式相互转换。但是,当使用打印命令时,我仍然会得到旧的数据格式。我在这里做错了什么?

for row in df['created_at']:
    row = datetime.strptime(row, "%Y-%m-%d %H:%M:%S").strftime('%d-%m-%Y')

print(df['created_at'])

【问题讨论】:

  • 试试df['created_at'] = pd.to_datetime(df['created_at']).strftime('%d-%m-%Y')这里不需要循环。
  • 您的代码不起作用的原因是row = ... 不会更改该行指向的内容。它只是将名称row 绑定到一个新对象。当for 循环分配另一个对象给row 时,该对象会立即被删除。

标签: python python-3.x datetime python-datetime


【解决方案1】:

在您的代码中,for 循环遍历每个元素,但它不保存结果。如果你尝试下面的代码,你会发现你的代码实际上运行良好,结果只是在操作后被“扔掉”。

for row in df['created_at']:
    row = datetime.strptime(row, "%Y-%m-%d %H:%M:%S").strftime('%d-%m-%Y')
    print(row)

你想做的是这样的:

l = []
for row in df['created_at']:
    l.append(datetime.strptime(row, "%Y-%m-%d %H:%M:%S").strftime('%d-%m-%Y'))
print(l)

更优雅的解决方案是使用列表推导:

df['created_at'] = [datetime.strptime(row, "%Y-%m-%d %H:%M:%S").strftime('%d-%m-%Y') for row in df['created_at']]
print(df['created_at'])

【讨论】:

  • 正如 Chris 所说,如果您正在使用 pandas,您会使用 pd.to_datetime - pandas 数据结构,如 pandas 内置功能 ;-)
猜你喜欢
  • 2021-11-23
  • 1970-01-01
  • 2020-05-23
  • 2019-04-04
  • 2018-09-01
  • 1970-01-01
  • 2023-01-31
  • 2023-04-01
  • 2015-09-17
相关资源
最近更新 更多