You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

快速日期时间转换:行情数据的日期与时间格式转换需求

嘿,这个行情数据格式转换的需求用Python的pandas就能轻松搞定,我给你整理好了具体的实现步骤和代码:

核心转换需求拆解

我们需要完成三个关键操作:

  • 将DATE列的数字格式(如20180312)转换为带横杠的标准日期格式(2018-03-12)
  • 将TIME_M列的时分秒字符串(如9:30:00.052465558)转换为当日累计秒数(如34200.052466)
  • 筛选并重新排列需要的列:保留DATE、EX、BID、ASK、time,剔除不需要的SYM_ROOT、SYM_SUFFIX等列
代码实现

首先确保你已经安装了pandas库,然后运行以下代码:

import pandas as pd

# 1. 加载原始数据(如果是从CSV文件读取,替换成 df = pd.read_csv('your_data_file.csv') 即可)
raw_data = {
    'DATE': [20180312, 20180312, 20180312, 20180312, 20180312],
    'TIME_M': ['9:30:00.052465558', '9:30:00.207724531', '9:30:00.208090941', '9:30:00.208116618', '9:30:00.208691471'],
    'EX': ['V', 'B', 'K', 'Z', 'V'],
    'BID': [41.67, 41.66, 40.80, 41.62, 40.76],
    'ASK': [43.77, 43.61, 44.76, 43.83, 43.77],
    'SYM_ROOT': ['TRIP']*5,
    'SYM_SUFFIX': [None]*5
}
df = pd.DataFrame(raw_data)

# 2. 转换DATE列格式
df['DATE'] = pd.to_datetime(df['DATE'], format='%Y%m%d').dt.strftime('%Y-%m-%d')

# 3. 转换TIME_M为当日累计秒数(保留6位小数)
df['time'] = pd.to_timedelta(df['TIME_M']).dt.total_seconds().round(6)

# 4. 筛选并重新排列目标列,保留原始索引
result_df = df[['DATE', 'EX', 'BID', 'ASK', 'time']].reset_index(drop=False)

# 查看转换后的结果
print(result_df)
代码细节说明
  • DATE列处理:用pd.to_datetime指定格式%Y%m%d将数字转为日期对象,再通过dt.strftime输出成YYYY-MM-DD的字符串格式
  • TIME_M列处理:用pd.to_timedelta将时间字符串转为时间差对象,dt.total_seconds()计算出当日累计的秒数,最后round(6)保证小数位数和示例一致
  • 列筛选:直接选取需要的列,并用reset_index(drop=False)保留原始的行索引(即示例中的0、1、2...序列)

运行后得到的结果完全符合你需要的格式!

内容的提问来源于stack exchange,提问作者python_enthusiast

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:44:16