python如何读取数据保存为新格式_python,初学者应用实例:读取文件中的数据,将将北京时间转换成世界时间,再保存成新的CSV格式文件...

数据格式转换是科研工作中经常需要完成的任务。本程序实现了这个功能。将文本文件“TableS1.dat”中的数据读取,原文件格式为:

No Date Time Mag Dis

11999/07/2505:28:39.580

21999/07/2523:06:31.940

31999/08/0601:54:40.6001.012.5

41999/08/1708:01:14.260

51999/08/1923:15:47.3200.71

该文件数据间隔为空,但空格数不一致,有时还用的是制表符,因此程序开关一段代码(已经注释掉)实现的是将这个文本文件读取并转存为标准的CSV文件。

然后再读取CSV文件,完成北京时间转换为世界时,并另存为“UTC_Table.csv”。这段代码虽然不长,但实现了数据读取,处理,时间格式处理等功能,具有很好的参考价值。

完整代码如下:

import time

import pandas as pds

# 将原始数据文件TableS1.dat转成标准的CSV文件。注意原始文件中输入数据的空格不规范,空格数不相同,有的还是制表符。

# with open('newTableS1.csv', 'w') as f1:

# with open('TableS1.dat', 'r') as f2:

# for line in f2:

# old_line = line.strip().split('\t')

# new_line = [i for i in old_line if i != '']

# print(new_line)

# new_line = ','.join(new_line)

# print(new_line)

# f1.write(new_line + '\n')

data = pds.read_csv('newTableS1.csv')

btc_date = data['Date']

btc_time = data['Time']

with open('UTC_table.csv', 'w') as f:

f.write('No,Date,Time,Mag,Dis' + '\n')

for i in range(len(btc_date)):

hr, min, sec = btc_time[i].strip().split(':')

utc = btc_date[i] + '-' + hr

utc_str = time.strptime(utc, '%Y/%m/%d-%H') # 将当前时间字符串转换为结构化时间,注意,这里只把小时加进来,分和秒不影响北京时转世界时

utc_timestamp = time.mktime(utc_str) #将结构化时间转换为时间戳

new_date = time.gmtime(utc_timestamp) # 将时间戳转换成世界时结构化时间

utc_date = '/'.join([str(new_date.tm_year), str(new_date.tm_mon), str(new_date.tm_mday)])

utc_time = ':'.join([str(new_date.tm_hour), min, sec])

new_line = [str(data['No'].loc[i]), utc_date, utc_time, str(data['Mag'].loc[i]), str(data['Dis'].loc[i])]

new_line = [i for i in new_line if str(i) != 'nan'] # 删除空元素

line = ','.join(new_line)

print(line)

f.write(line + '\n')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值