【发布时间】:2016-07-10 03:55:52
【问题描述】:
简而言之,我有一个程序可以打开一个 .csv 文件,读取 .csv 文件,然后将包含日期时间字符串数据的列合并到一个新的 .csv 文件中。但是,在程序将列合并到新文件之前,我首先需要从 datetime 字符串中仅读取时间,然后将时间转换为 UTC,然后将其合并到新的 .csv 文件中。
由于数据存储在 .csv 文件中,当检索到它时,它会以字符串形式出现:
"1/28/2016 3:52:49 PM"
如何仅读取 3:52:49 并将其设为 35249,然后将其转换为 UTC 时间,然后将时间作为新列存储在新的 .csv 文件中?
如果您需要我的代码:
import os
import csv
import datetime as dt
from os import listdir
from os.path import join
import matplotlib.pyplot as plt
#get the list of files in mypath and store in a list
mypath = 'C:/Users/Alan Cedeno/Desktop/Test_Folder/'
onlycsv = [f for f in listdir(mypath) if '.csv' in f]
#print out all the files with it's corresponding index
for i in range(len(onlycsv)):
print(i,onlycsv[i])
#prompt the user to select the files
option = input('please select file1 by number: ')
option2 = input('please select file2 by number: ')
#build out the full paths of the files and open them
fullpath1 = join(mypath, onlycsv[option])
fullpath2 = join(mypath, onlycsv[option2])
#create third new.csv file
root, ext = os.path.splitext(fullpath2)
output = root + '-new.csv'
with open(fullpath1) as r1, open(fullpath2) as r2, open(output, 'a') as w:
writer = csv.writer(w)
merge_from = csv.reader(r1)
merge_to = csv.reader(r2)
# skip 3 lines of headers
for _ in range(3):
next(merge_from)
for _ in range(1):
next(merge_to)
for merge_from_row, merge_to_row in zip(merge_from, merge_to):
# insert from col 0 as to col 0
merge_to_row.insert(1, merge_from_row[2])
# replace from col 1 with to col 3
#merge_to_row[0] = merge_from_row[2]
# delete merge_to rows 5,6,7 completely
#del merge_to_row[5:8]
writer.writerow(merge_to_row)
【问题讨论】: