Python панды: фильтрация строк по временным критериям с использованием панд - PullRequest
0 голосов
/ 17 декабря 2018

У меня есть CSV-файл с миллионами строк в следующем формате:

Amount,Price,Time
0.36,13924.98,2010-01-01 00:00:08
0.01,13900.09,2010-01-01 00:02:04
0.02,13907.59,2010-01-01 00:04:54
0.07,13907.59,2010-01-01 00:05:03
0.03,13925,2010-01-01 00:05:41
0.03,13920,2010-01-01 00:07:02
0.15,13910,2010-01-01 00:09:37
0.03,13909.99,2010-01-01 00:09:58
0.03,13909.99,2010-01-01 00:10:03
0.14,13909.99,2010-01-01 00:10:03

Я хочу сначала заполнить эти данные, а затем выполнить некоторые вычисления для отфильтрованных данных.Я импортирую его, используя pandas data = pd.read_csv(), чтобы получить DataFrame.

Затем я преобразую столбец Time в столбец TimeDelta (который, я не уверен, необходим для того, что я хочу сделать), где язапишите разницу во времени 2010-01-01 00:00:00, используя

data['TimeDelta'] = pd.to_timedelta(pd.to_datetime(data.Date)-pd.Timedelta(days=14610))/np.timedelta64(1, 'm')

Вот часть, с которой я борюсь.Мне нужна функция, которая возвращает новый DataFrame, где я хочу только первую строку после каждых n минут, где n является целым числом, определенным пользователем.

Например.Если n=5, желаемый результат этой функции для моих данных будет:

Amount,Price,Time
0.36,13924.98,2010-01-01 00:00:08
0.07,13907.59,2010-01-01 00:05:03
0.03,13909.99,2010-01-01 00:10:03

И вывод для n=3 будет:

Amount,Price,Time
0.36,13924.98,2010-01-01 00:00:08
0.02,13907.59,2010-01-01 00:04:54
0.15,13910,2010-01-01 00:09:37

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

1 Ответ

0 голосов
/ 17 декабря 2018

Использование pd.Grouper:

n=5
df.groupby(pd.Grouper(key = 'Time', freq=f'{n} min')).first()

                      Amount   Price
Time                                 
2010-01-01 00:00:00    0.36  13924.98
2010-01-01 00:05:00    0.07  13907.59
2010-01-01 00:10:00    0.03  13909.99
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...