将strptime函数应用于pandas系列

12

我有一个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()接受2个参数(给出18个)

我的问题是:(1) 我的方法正确吗?(2) 为什么 strptime 将我的args转换为18个参数?

1个回答

17

使用pd.to_datetime函数:

date_series = pd.to_datetime(date_string)
一般来说,如果您打算在Pandas中进行工作,最好将日期设置为Pandas的pd.Timestamp而不是Python的datetime.datetime。您可能还想查看时间序列/日期功能文档
至于为什么您的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'>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接