Python / Pandas: хотите разные времена дня с помощью уникальных дат в таймфреймах DataFrame - PullRequest
0 голосов
/ 10 сентября 2018

У меня есть CSV-файл pruned_results.txt, который выглядит так:

2018-08-01 08:41:08, Wait for OK to Measure
2018-08-01 09:02:26, Wait for OK to Measure
2018-08-01 10:49:06, Wait for OK to Measure
2018-08-01 14:19:16, Wait for OK to Measure
2018-08-01 21:46:23, Wait for OK to Measure
2018-08-02 01:11:06, Wait for OK to Measure
2018-08-02 02:47:11, Wait for OK to Measure
2018-08-02 04:05:41, Wait for OK to Measure

Первый столбец, который я хочу импортировать как индекс DateTime в панде DataFrame. Второй столбец - это данные, и я называю это State. У меня есть следующий код:

import pandas as pd

df = pd.read_csv("pruned_result.txt", header=None, index_col=0)
df.index = pd.to_datetime(df.index)
df.columns = ['State']
df.index.names = ['Timestamp']

Пока все хорошо. Оказывается, у меня на самом деле один или два ряда с одинаковыми временными метками Это не важно для меня, чтобы сохранить. Поэтому я хочу удалить дубликаты перед поворотом столбца State. Проблема, с которой я сталкиваюсь, заключается в том, что строки считаются дублирующими, если они имеют одинаковую дату. Но я хочу, чтобы их считали дубликатами, только если они совпадают до одной и той же секунды дня. То есть код

df.drop_duplicates(keep='first', inplace=True)

удаляет слишком много строк (после этой команды у меня осталось только шесть строк!). Как я могу изменить это поведение, чтобы я сбрасывал только дубликаты в секунду?

Спасибо за ваше время!

1 Ответ

0 голосов
/ 10 сентября 2018

Ваша проблема в том, что drop_duplicates отбрасывается на основе столбцов, которые в данном случае равны 'State'.Вы хотите сохранить недублированные индексы, поэтому вместо этого следует использовать pandas.Index.duplicated для маскировки оригинала DataFrame

df[~df.index.duplicated(keep='first')]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...