将 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 个参数?
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'>
我有一个 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 个参数?
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'>