2016-04-15 3 views
0

У меня есть столбец разного времени, и я хочу найти значения между двумя разными временами, но не могу узнать, как это сделать? Например: 09:04:00 бросил 09:25:00. И просто используйте значения между этими разными временами.Удаление точек с запятой в столбце csv в python

Я собирался просто удалить точки с запятой, отделяющие часы: минуты: секунды и сделать это таким образом. Но на самом деле не знаю, как это сделать. Но я знаю, как найти значение в столбце, поэтому я решил, что путь будет проще idk.

Вот csv, с которым я работаю.

ДАТА, ВРЕМЯ, ОТКРЫТО, HIGH, LOW, CLOSE, VOLUME 02/03/1997,09: 04: 00,3046.00,3048.50,3046.00,3047.50,505
02/03/1997,09: 05 : 00,3047.00,3048.00,3046.00,3047.00,162
02/03/1997,09: 06: 00,3047.50,3048.00,3047.00,3047.50,98
02/03/1997,09: 07: 00,3047.50 , 3047.50,3047.00,3047.50,228
02/03/1997,09: 08: 00,3048.00,3048.00,3047.50,3048.00,136
02/03/1997,09: 09: 00,3048.00,3048.00,3046.50 , 3046.50,174
02/03/1997,09: 10: 00,3046.50,3046.50,3045.00,3045.00,134
02/03/1997,09: 11: 00,3045,50,3046.00,3044.00,3045.00,43
02/03/1997,09: 12: 00,3045.00,3045.50,3045.00,3045.00,214
02/03 /1997,09:13:00,3045,50,3045,50,3045,50,3045,50,8
02/03/1997,09: 14: 00,3045,50,3046.00,3044,50,3044,50,152
02/03/1997,09 : 15: 00,3044.00,3044.00,3042.50,3042.50,126
02/03/1997,09: 16: 00,3043.50,3043.50,3043.00,3043.00,128
02/03/1997,09: 17: 00 , 3042.50,3043.50,3042.50,3043.50,23
02/03/1997,09: 18: 00,3043.50,3044,50,3043.00,3044.00,51
02/03/1997,09: 19: 00,3044,50,3044.50 , 3043,00, 3043,00, 18
02/03/1997,09: 20: 00,3043.00,3045.00,3043.00,3045.00,23
02/03/1997,09: 21: 00,3045.00,3045.00,3044.50,3045.00,51
02/03/1997,09: 22: 00,3045.00,3045.00,3045.00,3045.00,47
02/03/1997,09: 23: 00,3045,50,3046.00,3045.00,3045.00,77
02/03/1997, 09: 24: 00,3045.00,3045.00,3045.00,3045.00,131
02/03/1997,09: 25: 00,3044,50,3044,50,3043.50,3043.50,138
02/03/1997,09: 26: 00,3043.50,3043.50,3043.50,3043.50,6
02/03/1997,09: 27: 00,3043.50,3043.50,3043.00,3043.00,56
02/03/1997,09: 2 8: 00,3043.00,3044.00,3043.00,3044.00,32
02/03/1997,09: 29: 00,3044,50,3044,50,3044,50,3044,50,63
02/03/1997,09: 30: 00, 3045,00, 3045,00, 3045,00, 3045,00,28
02/03/1997,09: 31: 00,3045.00,3045.50,3045.00,3045.50,75
02/03/1997,09: 32: 00,3045,50,3045.50, 3044,00, 3044,00,54
02/03/1997,09: 33: 00,3043.50,3044,50,3043.50,3044.00,96
02/03/1997,09: 34: 00,3044.00,3044.50,3044.00,3044.50, 27
02/03/1997,09: 35: 00,3044.50,3044.50,3043.50,3044.50,44
02/03/1997,09: 36: 00,3044.00,3044.00,3043.00,3043.00,61
02/03/1997,09: 37: 00,3043.50,3043.50,3043.50,3043.50,18

Благодарность за время

+0

К сожалению, я не объяснить себя хорошо, что я пытаюсь получить все данные в кадре данных (DATE, TIME, OPEN, HIGH, LOW, CLOSE, VOLUME), которые находятся между этим временем 09:04:00 и 09:25:00. Я должен просто сказать это так, что сожалею о путанице, я действительно ценю все время. –

ответ

1

Если вы просто хотите, чтобы заменить запятую с запятыми вы можете использовать встроенный в string replace функции ,

line = '02/03/1997,09:24:00,3045.00,3045.00,3045.00,3045.00,131' 
line = line.replace(':',',') 
print(line) 

Выход

02/03/1997,09,04,00,3046.00,3048.50,3046.00,3047.50,505

Затем разделить на запятые для разделения данных.

line.split(',') 

Если вы хотите только числовые значения, можно также сделать следующее (с использованием регулярных выражений):

import re 
line = '02/03/1997,09:04:00,3046.00,3048.50,3046.00,3047.50,505' 
values = [float(x) for x in re.sub(r'[^\w.]+', ',', line).split(',')] 
print values 

Что дает вам список числовых значений, которые можно обработать.

[2,0, 3,0, 1997,0, 9,0, 4,0, 0,0, 3046,0, 3048,5, 3046,0, 3047,5, 505,0]

+0

Извините, я не объяснил себя полностью. Я пытаюсь получить все данные в кадре данных (DATE, TIME, OPEN, HIGH, LOW, CLOSE, VOLUME), которые находятся между этим временем 09:04:00 и 9:25:00. Я должен просто сказать это так, что сожалею о путанице, я действительно ценю ваше время. –

1

Используйте csv модуль! :)

>>>import csv 
>>> with open('myFile.csv', newline='') as csvfile: 
...  myCsvreader = csv.reader(csvfile, delimiter=',', quotechar='|') 
...  for row in myCsvreader: 
...   for item in row: 
...    item.spit(':') # Returns hours without semicolons 

После того, как вы извлекли различные временные метки, вы можете использовать datetime модуль, например:

from datetime import datetime, date, time 

x = time(hour=9, minute=30, second=30) 
y = time(hour=9, minute=30, second=42) 

diff = datetime.combine(date.today(), y) - datetime.combine(date.today(), x) 
print diff.total_seconds() 
+0

Извините, я не объяснил себя полностью. Я пытаюсь получить все данные в фрейме данных (DATE, TIME, OPEN, HIGH, LOW, CLOSE, VOLUME), которые находятся между этим временем 09:04:00 и 9:25:00. Я должен просто сказать это так, что сожалею о путанице, я действительно ценю ваше время. –