【问题标题】:Convert a series of string to date [duplicate]将一系列字符串转换为日期[重复]
【发布时间】:2019-04-17 22:33:04
【问题描述】:

我有这样的数据

df['Date']=['05.01.2017','05.01.2017']

我试过了

df1= pd.to_datetime(df['Date'])

但结果很糟糕

我想像这样获取新数据

result=[05-01-2017,05-01-2017]

【问题讨论】:

  • 结果如何不好?
  • @roganjosh:它可能会交换日期和月份。
  • 可能。但他们把它带到了约会时间。要么需要day_first 参数,要么传递一个格式字符串,然后将strf 传回。这一定是个骗子。
  • 您要么处理 pandas 固有的日期时间格式,要么转换回具有新格式的字符串。您想要的格式(不带引号)在数据的 python 表示中是不可能的。

标签: python pandas datetime


【解决方案1】:

您只需指定列中日期的格式。从你的例子中这对我有用。很简单。

pd.to_datetime(df['Date'], format = '%d.%m.%Y')

我假设您的日期中的数字分别是 day.month.year 而不是 month.day.year。如果后者为真,那么您应该改用format = '%m.%d.%Y'

【讨论】:

  • 我不太确定。我的 猜测 是他们想要转换回字符串,因为这不会产生非常有用的自然表示。我认为这是一个 XY 问题。
  • 我认为由于所需的result=[05-01-2017,05-01-2017] 并且结果日期周围没有字符串标记,就像输入日期周围一样,他们希望它采用日期时间格式。不过,我会等待他们的回应。
  • 认为你是对的。无法测试 atm,所以我认为它依赖于 OP 对他们到底想要什么的澄清。
  • 感谢詹姆斯的澄清
【解决方案2】:

如果您知道您的日期始终是 MM.DD.YYYY 形式的字符串,而您只需使用 MM-DD-YYYY 代替,那么您不必处理任何 datetime 转换。您可以对字符串进行替换:

>>> from datetime import datetime
>>> mydatestrings = ['05.01.2017','05.02.2017','05.03.2017']
>>> newdates = [ d.replace('.','-') for d in mydatestrings ]
>>> print(newdates)
['05-01-2017', '05-02-2017', '05-03-2017']

另一方面,如果您真的想在 Python 中将所有日期作为“日期时间”对象获取,您可以像这样创建一个新列表:

>>> datetime_objs = [ datetime.strptime(d, '%m.%d.%Y') for d in mydatestrings ]

然后根据需要对其进行格式化:

>>> print(datetime_objs[1].strftime('%m-%d-%Y'))
05-02-2017
>>> print(datetime_objs[1].strftime('%b, %d %Y'))
May, 02 2017

【讨论】:

  • 这根本不涉及pandas,因此在当前形式下将无法使用
猜你喜欢
  • 2014-12-08
  • 1970-01-01
  • 2016-12-24
  • 2012-07-30
  • 2012-11-25
  • 2011-08-30
  • 2017-11-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多