python pandas,将多个字符串的列转换为时间



i有一个pandas dataframe,由许多列组成,这些列是以时代表示的字符串(例如" 8:14:30.123")。是否有一种有效的方法将所有这些列转换为数值?我进行了一些研究并找到了熊猫to_datetime()功能,但一次仅适用于一个列,而且我有太多的列以迭代。

您可以通过它们迭代并应用to_datetime函数或

当您以CSV的方式读取它时,请使用parse_dates参数:

parse_dates:boolean,ints或名称列表,列表列表或dict 如果是正确的 ->尝试解析索引。如果[1,2,3] ->尝试解析列 1、2、3每个作为单独的日期列。如果[[1,3]] ->组合列 1和3,分析作为单个日期列。{‘foo’:[1,3]} ->解析 第1列1,3作为日期和呼叫结果" foo"有一个快速路径 ISO8601格式日期。

更新:

如果您想要的速度,最好使用以下功能将列转换为DateTime。

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

相关内容

  • 没有找到相关文章

最新更新