将一系列字符串转换为日期[重复]

Posted

技术标签:

【中文标题】将一系列字符串转换为日期[重复]【英文标题】: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 表示中是不可能的。 【参考方案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,因此在当前形式下将无法使用

以上是关于将一系列字符串转换为日期[重复]的主要内容,如果未能解决你的问题,请参考以下文章

将一列日期数字转换为缩写月份

VBA 如何将一列字符转成日期

如何将一系列int转换为用于变量的字符串?

将JSON字符串转换为日期[重复]

如何在c#中将字符串转换为日期[重复]

sql如何将字符串转为日期