快速日期时间转换:行情数据的日期与时间格式转换需求
嘿,这个行情数据格式转换的需求用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
相关产品推荐
相关产品推荐

