pandas 的 to_datetime 转换日期格式很慢如何解决

本文介绍了一种在处理CSV文件时提高日期数据列转换效率的方法。通过指定转换格式,使用pd.to_datetime()函数可以显著加快处理速度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

从csv文件中读取数据后,要成列转换日期数据,使用 pd.to_datetime() 时,如果不指定转换方式,有时候会超级慢。
此时可这么写:

df.index=pd.to_datetime(df.index,format='%Y-%m-%d %H:%M:%S.%f')
``` import pandas as pd import aacgmv2 from datetime import datetime from tqdm import tqdm # 可选:用于显示进度条 def convert_geo_to_mag_batch(df, lat_col='lat', lon_col='lon', alt_col='alt', utc_col='utc_time'): """ 批量将地理坐标转换为地磁坐标 参数: df : pd.DataFrame 输入数据框,需包含纬度、经度、高程、UTC时间列 lat_col : str, 默认 'lat' 纬度列名 lon_col : str, 默认 'lon' 经度列名 alt_col : str, 默认 'alt' 高程列名(单位:米) utc_col : str, 默认 'utc_time' UTC时间列名(支持datetime对象或字符串) 返回: pd.DataFrame - 新增mag_lat和mag_lon列的数据框 """ # 创建结果列 df['mag_lat'] = None df['mag_lon'] = None df['error'] = None # 确保时间格式正确 if not pd.api.types.is_datetime64_any_dtype(df[utc_col]): df[utc_col] = pd.to_datetime(df[utc_col], errors='coerce') # 批量处理(使用tqdm显示进度条) for idx, row in tqdm(df.iterrows(), total=len(df)): try: # 提取数据 lat = row[lat_col] lon = row[lon_col] alt = row[alt_col] / 1000 # 米转千米 utc_time = row[utc_col] # 检查数据有效性 if pd.isnull(lat) or pd.isnull(lon) or pd.isnull(alt) or pd.isnull(utc_time): raise ValueError("存在空值") # 执行坐标转换 mag_lat, mag_lon, _ = aacgmv2.convert_latlon(lat, lon, alt, utc_time) # 存储结果 df.at[idx, 'mag_lat'] = mag_lat df.at[idx, 'mag_lon'] = mag_lon except Exception as e: df.at[idx, 'error'] = str(e) return df # 示例用法 if __name__ == "__main__": # 创建示例数据 data = { 'lat': [45.0, 60.0, -30.5], 'lon': [100.0, -80.0, 150.3], 'alt': [0, 5000, 200], 'utc_time': ['2024-05-15 12:00:00', '2023-01-01 00:00:00', '2022-07-20 18:30:00'] } df = pd.DataFrame(data) # 执行批量转换 result_df = convert_geo_to_mag_batch(df) # 显示结果 print("\n转换结果:") print(result_df[['lat', 'lon', 'alt', 'utc_time', 'mag_lat', 'mag_lon', 'error']])```代码正确性,是否可以效率优化
03-21
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值