【问题标题】:Need to convert word month into number from a table需要将单词月份转换为表格中的数字
【发布时间】:2019-10-11 14:19:40
【问题描述】:

我想将 df['Date'] 列转换为数字时间格式: 当前格式,即 2019 年 10 月 9 日 --> 10-09-2019 这是我的代码,但在打印之前我没有收到错误。感谢您的支持!

我做了一些改变, 我想将当前时间格式转换为数字时间格式,即:Oct 9, 2019 --> 10-09-2019 in a table of a column

from time import strptime

strptime('Feb','%b').tm_mon


Date_list = df['Date'].tolist()
Date_num = []
for i in Date_list:
    num_i=strptime('[i[0:3]]', '%b').tm_mon
    Date_num.append(num_i)
df['Date'] = Date_num 
print(df['Date'])

我收到如下错误信息:

密钥错误
ValueError: 时间数据 '[i[0:3]]' 与格式 '%b' 不匹配

Date
Oct 09, 2019
Oct 08, 2019
Oct 07, 2019
Oct 04, 2019
Oct 03, 2019

【问题讨论】:

  • 欢迎来到 StackOverflow。请按照您创建此帐户时的建议阅读并遵循帮助文档中的发布指南。 Minimal, complete, verifiable example 适用于此。在您发布 MCVE 代码并准确说明问题之前,我们无法有效地帮助您。我们应该能够将您发布的代码粘贴到文本文件中并重现您指定的问题。您发布的代码崩溃,因为 df 未定义。
  • 错误告诉您,您提供的密钥i[0:3] 不在字典中。由于您未能提供数据框或任何程序跟踪,我们无法为您提供太多帮助。
  • 使用to_datetime,不要转换成列表也不要迭代!我建议将其保留为日期时间对象,而不是转换回字符串。请注意,您需要指定 format 参数。使用this page 作为参考来确定format 字符串在您的情况下应该是什么。作为提示,请在格式字符串中保留空格和逗号,使其与日期字符串中的显示完全相同。
  • @Dan 说了什么。但是您似乎也混淆了将实际的文字字符串“[i[0:3]]”传递给strptime,而不是'[i[0:3]]'的值。

标签: python pandas datetime


【解决方案1】:

假设df 中的Date 列是str/object 类型。 可以通过运行pd.dtypes 来验证。 在这种情况下,您可以通过

将您的列直接转换为 datetime 类型
df['Date'] = df['Date'].astype('datetime64[ns]')

它将以默认格式2019-10-09 显示日期。如果您愿意,您可以通过执行类似的操作轻松地将其转换为您想要的任何其他日期格式

pd.dt.dt.strftime("%d-%m-%Y")

请通过https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Timestamp.html 了解更多与 pandas 日期时间功能/操作相关的信息

【讨论】:

  • 非常感谢,一切可行!问题解决了。
猜你喜欢
  • 1970-01-01
  • 2015-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多