Выделите строки с заданной датой и сохраните в файле CSV - PullRequest
0 голосов
/ 15 октября 2019

Я дал небольшой фрейм данных, который выглядит следующим образом:
dataframe
В первом столбце «время» дается время эпохи Unix в мс. Во втором столбце A строки заполнены данными.
Тогда я бы хотел определить два раза как:

t1 = 00:00:01.500
t2 = 00:00:02.000 

Моя цель - обрезать строки от t1 до t2 и сохранить их в файле CSV.

Чтобы преобразовать время эпохи Unix в DateTime, я использую следующую команду:

pd.to_datetime(time_ms, unit='ms').dt.time

Теперь я не знаю, как определить t1 и t2 как дату и время. Я пробовал это как строку, которую я проверял с условием if.

time_ms = []
for i in df["time"]:
    if i >= t1 and i <= t2: 
        time_ms.append(i)

логически это не будет работать, потому что операторы не могут быть использованы для строковых данных.

1 Ответ

1 голос
/ 15 октября 2019

Вы уже конвертировали Unix Epox в datetime и получаете только time

df['time_ms'] = pd.to_datetime(df['time'], unit='ms').dt.time

Теперь вам нужно преобразовать строку "00:00:01.500" в datetime и получить только time

t1 = datetime.datetime.strptime("00:00:01.500", "%H:%M:%S.%f").time()
t2 = datetime.datetime.strptime("00:00:02.000", "%H:%M:%S.%f").time()

, а затем вы можете фильтровать DataFrame

result = df[ (t1 < df['time_ms']) & (df['time_ms'] < t2) ]

Минимальный рабочий пример:

import pandas as pd
import datetime

df = pd.DataFrame({
    'time': [0,1100,1200,1300,1400,1500,1600,1700,1800],
})    

df['time_ms'] = pd.to_datetime(df['time'], unit='ms').dt.time

t1 = datetime.datetime.strptime("00:00:01.500", "%H:%M:%S.%f").time()
t2 = datetime.datetime.strptime("00:00:02.000", "%H:%M:%S.%f").time()

result = df[ (t1 < df['time_ms']) & (df['time_ms'] < t2) ]

print(result)

Результат:

   time          time_ms
6  1600  00:00:01.600000
7  1700  00:00:01.700000
8  1800  00:00:01.800000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...