将 strptime 函数应用于 pandas 系列

Applying strptime function to pandas series

我有一个 pandas DataSeries,它包含格式为字符串的日期:

2016-01-14 11:39:54

我想将字符串转换为时间戳。

我正在使用 apply 方法尝试将 'datetime.strptime' 传递给系列的每个元素

date_series = date_string.apply(datetime.strptime, args=('%Y-%m-%d %H:%M:%S'))

当我 运行 代码时,出现以下错误:

strptime() takes exactly 2 arguments (18 given)

我的问题是 (1) 我采用的方法是否正确,(2) 为什么 strptime 将我的参数转换为 18 个参数?

使用pd.to_datetime:

date_series = pd.to_datetime(date_string)

一般来说,如果您计划在 Pandas 工作,最好将日期设置为 Pandas' pd.Timestamp 而不是 Python 的 datetime.datetime ].您可能还想查看 Time Series / Date functionality documentation.

至于为什么你的 apply 不起作用,args 没有被读取为元组,而是被分解为 17 个字符的字符串,每个字符都被解释为一个单独的参数。要使其作为元组读取,请添加逗号:args=('%Y-%m-%d %H:%M:%S',).

这是 Python 中的标准行为。考虑以下示例:

x = ('a')
y = ('a',)
print('x info:', x, type(x))
print('y info:', y, type(y))

x info: a <class 'str'>
y info: ('a',) <class 'tuple'>