我有一个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
将我的args转换为18个参数?
答案 0 :(得分:5)
date_series = pd.to_datetime(date_string)
一般情况下,您的日期最好是熊猫'如果您计划在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'>