如何从CSV文件的时间字段中移除日期并支持批量处理
CSV数据处理:提取Time字段时间值及批量处理方案
一、解决CSV空格+分号的分隔问题
不管用Python内置csv模块还是pandas,都能轻松处理带空格的分号分隔:
- 用
csv模块:读取时指定delimiter=';',同时对每一行的字段做strip()去除前后空格import csv processed_rows = [] with open('your_file.csv', 'r', newline='', encoding='utf-8') as f: reader = csv.reader(f, delimiter=';') header = [col.strip() for col in next(reader)] processed_rows.append(header) for row in reader: cleaned_row = [col.strip() for col in row] processed_rows.append(cleaned_row) - 用
pandas:直接加skipinitialspace=True参数,自动忽略分隔符后的空格import pandas as pd df = pd.read_csv('your_file.csv', sep=';', skipinitialspace=True)
二、提取Time字段的时间值
针对Time字段日期 时间的格式,有两种简单实现方式:
1. 字符串分割法
直接按空格拆分字符串,取后半部分时间值:
csv模块处理时,在清洗行数据后修改Time字段:# 承接上面csv模块的代码,在cleaned_row处理后 cleaned_row[0] = cleaned_row[0].split(' ')[1] # 假设Time是第一列pandas中直接拆分列:df['Time'] = df['Time'].str.split(' ', expand=True)[1]
2. 正则匹配法
如果日期格式不固定,用正则精准匹配HH:MM:SS格式的时间部分:
# pandas中使用正则提取 import re df['Time'] = df['Time'].apply(lambda x: re.search(r'\d{2}:\d{2}:\d{2}', x).group())
三、5000条数据的批量处理支持
5000条属于小规模数据,两种方法都完全能胜任:
- 内置
csv模块:内存占用极低,处理速度快,无性能压力 pandas:处理十万级甚至百万级数据都轻松,5000条更是毫无问题
处理完成后,将结果写回新CSV文件:
csv模块写法:with open('processed_file.csv', 'w', newline='', encoding='utf-8') as f: writer = csv.writer(f, delimiter=';') writer.writerows(processed_rows)pandas写法:df.to_csv('processed_file.csv', sep=';', index=False)
内容的提问来源于stack exchange,提问作者EggSci
相关产品推荐
相关产品推荐

