繁体   English   中英

Python熊猫,将多列字符串转换为时间?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM