Pandas падение строк по времени - PullRequest
0 голосов
/ 19 марта 2020

Я хотел бы отбросить строки данных в зависимости от времени (игнорируя дату). Мои данные содержат около 100 миллионов строк. У меня около 100 столбцов, и каждый столбец имеет разную частоту дискретизации. Idea of dropping rows

Я подготовил следующий фрагмент кода, который учитывает различную частоту дискретизации:

import pandas as pd

# leave_duration=0.01 seconds
# drop_duration=0.1 seconds

i = pd.date_range('2018-01-01', periods=1000, freq='2ms')
i=i.append(pd.date_range('2018-01-01', periods=1000, freq='3ms'))
i=i.append(pd.date_range('2018-01-01', periods=1000, freq='0.5ms'))
df = pd.DataFrame({'A': range(len(i))}, index=i)
df=df.sort_index()
print(df)
# drop by duration....

В этом простом примере есть данные, которые хранятся около 1 секунда и имеет 3 разных частоты дискретизации. Цель состоит в том, чтобы отбросить строки, которые длятся (например) 0,1 секунды, и оставить ряды (например) 0,01 секунды. Как я могу сделать это с однострочником?

1 Ответ

0 голосов
/ 19 марта 2020

на df=df.loc['2018-01-01 00:00:00.000000 ':'2018-01-01 00:00:00.000500 '] у вас будут новые данные от 2018-01-01 00:00:00.000000 до 2018-01-01 00:00:00.000500, теперь вы можете применить свой фильтр для дат желаний

import pandas as pd

# leave_duration=0.01 seconds
# drop_duration=0.1 seconds

i = pd.date_range('2018-01-01', periods=1000, freq='2ms')
i=i.append(pd.date_range('2018-01-01', periods=1000, freq='3ms'))
i=i.append(pd.date_range('2018-01-01', periods=1000, freq='0.5ms'))
df = pd.DataFrame({'A': range(len(i))}, index=i)
df=df.sort_index()
print(df)

#filter data between 2018-01-01 00:00:00.000000 ':'2018-01-01 00:00:00.000500
df=df.loc['2018-01-01 00:00:00.000000 ':'2018-01-01 00:00:00.000500 ']
print(df)

Вывод: до применения фильтра данных

                               A
2018-01-01 00:00:00.000000     0
2018-01-01 00:00:00.000000  2000
2018-01-01 00:00:00.000000  1000
2018-01-01 00:00:00.000500  2001
2018-01-01 00:00:00.001000  2002
...                          ...
2018-01-01 00:00:02.985000  1995
2018-01-01 00:00:02.988000  1996
2018-01-01 00:00:02.991000  1997
2018-01-01 00:00:02.994000  1998
2018-01-01 00:00:02.997000  1999

[3000 rows x 1 columns]

После применения фильтра даты:


                               A
2018-01-01 00:00:00.000000     0
2018-01-01 00:00:00.000000  2000
2018-01-01 00:00:00.000000  1000
2018-01-01 00:00:00.000500  2001
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...