Фильтруйте DataFrame, сравнивая даты из двух разных столбцов - PullRequest
0 голосов
/ 11 января 2019

У меня есть датафрейм, похожий на:

   Publication Date        Date  Value State
0        2018-12-12  2018-12-11    2.0    AL
1        2018-12-12  2018-12-11    1.0    AZ
2        2018-12-12  2018-12-11    1.0    AK
3        2018-12-12  2018-12-11    2.0    NJ
4        2018-12-12  2018-12-11    1.5    NY
5        2018-12-12  2018-12-12   12.0    AL
6        2018-12-12  2018-12-12   13.0    AZ
7        2018-12-12  2018-12-12   14.0    AK
8        2018-12-12  2018-12-12   12.0    NJ
9        2018-12-12  2018-12-12   11.5    NY
10       2018-12-13  2018-12-12    2.0    AL
11       2018-12-13  2018-12-12    3.0    AZ
12       2018-12-13  2018-12-12    6.0    AK
13       2018-12-13  2018-12-12    1.0    NJ
14       2018-12-13  2018-12-12    4.0    NY

Я хочу удалить каждое вхождение, где Publication date = Date + 1, поэтому, когда Publication Date = 2018-12-12 и Date = 2018-12-11, все эти значения будут удалены.

Это будет выглядеть так:

 Publication Date       Date  Value State
       2018-12-12 2018-12-12   12.0    AL
       2018-12-12 2018-12-12   13.0    AZ
       2018-12-12 2018-12-12   14.0    AK
       2018-12-12 2018-12-12   12.0    NJ
       2018-12-12 2018-12-12   11.5    NY

Какой самый простой способ сделать это?

Ответы [ 3 ]

0 голосов
/ 11 января 2019

Для этого, пожалуйста, импортируйте timedelta

from datetime import timedelta

Сначала преобразовать тип данных столбца даты в дату и время.

df.Date = pd.to_datetime(df.Date)
df["Publication Date"] = pd.to_datetime(df["Publication Date"])

Затем отфильтруйте фрейм данных

df = df[df["Publication Date"] != df.date + timedelta(days=1)];
0 голосов
/ 11 января 2019

Использование

df[(df.Publication-df.Date).dt.days!=1]
0 голосов
/ 11 января 2019

Получить маску, использовать ее для фильтрации df:

m = df['Publication Date'].eq(df['Date'] + pd.Timedelta(1, unit='D'))
df[~m]

  Publication Date       Date  Value State
5       2018-12-12 2018-12-12   12.0    AL
6       2018-12-12 2018-12-12   13.0    AZ
7       2018-12-12 2018-12-12   14.0    AK
8       2018-12-12 2018-12-12   12.0    NJ
9       2018-12-12 2018-12-12   11.5    NY

Если «Дата публикации» и «Дата» не являются столбцами даты и времени, используйте pd.to_datetime(..., errors='coerce'), чтобы сначала их принудительно привести.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...