如何使用Pandas将DataFrame中的时间时长转换为毫秒?
将Pandas中的时长字符串转换为毫秒
完整解决方案代码
import pandas as pd from io import StringIO # 生成原始DataFrame df = """ b_id duration1 duration2 user 384 28 days 21:05:16.141263 0 days 00:00:44.999706 Test """ df = pd.read_csv(StringIO(df.strip()), sep='\\s\\s+', engine='python') # 将时长字符串转换为毫秒 df['duration1_ms'] = pd.to_timedelta(df['duration1']).total_seconds() * 1000 df['duration2_ms'] = pd.to_timedelta(df['duration2']).total_seconds() * 1000 # 可选:转换为整数毫秒(去掉小数部分) df['duration1_ms'] = df['duration1_ms'].astype(int) df['duration2_ms'] = df['duration2_ms'].astype(int) print(df)
关键步骤说明
- 解析时长字符串:
pd.to_timedelta()可以自动识别X days hh:mm:ss.ffffff格式的字符串,将其转换为Pandas原生的Timedelta类型,该类型支持各类时间运算。 - 转换为毫秒:调用
total_seconds()方法获取时长的总秒数,乘以1000即可得到总毫秒数。 - 整数毫秒处理:如果不需要保留小数部分的毫秒,用
astype(int)转换类型即可。
输出示例
b_id duration1 duration2 user duration1_ms duration2_ms 0 384 28 days 21:05:16.141263 0 days 00:00:44.999706 Test 2493916141 44999
内容的提问来源于stack exchange,提问作者William
相关产品推荐
相关产品推荐

