In a nutshell, I have a program that opens a .csv file, reads the .csv file, and then merges a column with datetime string data to a new .csv file. However, before the program merges the column to the new file, I first need to read only the time from the datetime string, then convert the time to UTC and then merge it to the new .csv file.
Since the data is being stored in the .csv file, and when retrieved it comes out as a string like:
"1/28/2016 3:52:49 PM"
How do I read only the 3:52:49 and make it 35249, then convert it to UTC time, before storing the time as a new column in the new .csv file?
In case you need my code:
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)