[英]Python pandas, converting multiple columns of strings into time?
我有一个熊猫DataFrame,它由许多列组成,这些列表示为时间(例如“ 8:14:30.123”)。 是否有一种有效的方法将所有这些列转换为数值? 我进行了一些研究,发现panda to_datetime()
函数,但它一次仅适用于一列,并且我有太多的列需要迭代。
您可以遍历它们并应用to_datetime
函数,或者
当您将其读取为CSV时,请使用parse_dates
参数:
parse_dates:布尔值,整数或名称列表,列表列表或dict如果为True->尝试解析索引。 如果[1、2、3]->尝试将第1、2、3列分别解析为单独的日期列。 如果[[1,3]]->合并列1和3并解析为单个日期列。 {'foo':[1,3]}->将第1、3列解析为日期,并调用结果'foo'。存在iso8601格式日期的快速路径。
如果需要它的速度,最好使用下面的函数将列转换为日期时间。
def lookup(s):
"""
This is an extremely fast approach to datetime parsing.
For large data, the same dates are often repeated. Rather than
re-parse these, we store all unique dates, parse them, and
use a lookup to convert all dates.
"""
dates = {date:pd.to_datetime(date) for date in s.unique()}
return s.apply(lambda v: dates[v])
好处是可以查找重复的日期,而不必一次又一次地转换为日期时间。 似乎存在明显的速度差异:
$ python date-parse.py
to_datetime: 5799 ms
dateutil: 5162 ms
strptime: 1651 ms
manual: 242 ms
lookup: 32 ms
来源: https : //github.com/sanand0/benchmarks/tree/master/date-parse
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.