如何在Pandas DataFrame中高效将字符串时间转为毫秒级epoch时间戳
高效转换Pandas DataFrame时间列为毫秒级Epoch时间戳
嘿,完全不用手动迭代列表!Pandas有专门的向量化操作来处理这种需求,速度快还简洁,给你两种实用的方法:
方法一:利用pd.to_datetime + astype
这是最直观且易读的方式,适合大多数场景:
- 首先把
Time列的字符串转换成Pandas的datetime类型(Pandas能自动识别你这种ISO格式的时间字符串) - 将
datetime对象转为纳秒级整数,再除以10^6得到毫秒级时间戳
代码示例:
import pandas as pd # 构造你的DataFrame df = pd.DataFrame({ 'Time': ['2018-03-30T14:18:49.600', '2018-03-30T14:18:49.800', '2018-03-30T14:18:50.000'], 'User': ['U101', 'U102', 'U101'], 'value': [23, 22, 24] }) # 转换时间列并生成毫秒级epoch戳 df['Time'] = pd.to_datetime(df['Time']) df['epoch_ms'] = df['Time'].astype('int64') // 10**6
执行后你会得到新的epoch_ms列,值分别是1522424329600、1522424329800、1522424330000,完全符合需求。
方法二:底层numpy数组视图(更高效)
如果你的数据集特别大,想要极致性能,可以直接操作底层的numpy数组:
df['epoch_ms'] = df['Time'].values.view('int64') // 10**6
这个方法跳过了Pandas的一些包装层,直接把datetime对象的底层纳秒数值转成整数,速度比astype略快一点,适合百万级以上的数据集。
关键优势
这两种方法都是向量化操作,比你之前的逐行迭代效率高几个数量级——Pandas的向量操作是用C语言实现的,避免了Python循环的开销,处理大数据时差距特别明显。
内容的提问来源于stack exchange,提问作者SheCodes
相关产品推荐
相关产品推荐

