Сопоставление нескольких столбцов Python внутри pandas df, а затем удаление строк, которые не соответствуют - PullRequest
0 голосов
/ 01 ноября 2019

У меня есть фрейм данных с несколькими столбцами времени / даты:

{'city': {0: 'HOUSTON', 1: 'HOUSTON', 2: 'HOUSTON', 3: 'HOUSTON', 4: 'HOUSTON'}, 'timeDate_1': {0: Timestamp('2017-07-01 08:00:00'), 1: Timestamp('2017-07-01 08:00:00'), 2: Timestamp('2017-07-01 08:00:00'), 3: Timestamp('2017-07-01 08:00:00'), 4: Timestamp('2017-07-01 08:00:00')}, 'hour': {0: 2, 1: 2, 2: 3, 3: 4, 4: 4}, 'timeDate_2': {0: Timestamp('2017-01-07 00:00:00'), 1: Timestamp('2017-01-07 00:00:00'), 2: Timestamp('2017-01-07 00:00:00'), 3: Timestamp('2017-01-07 00:00:00'), 4: Timestamp('2017-01-07 00:00:00')}}

Мне нужно сопоставить эти столбцы - как если бы timeDate_1 равнялось timeDate_2 (или столбцу hour),и отбросить все строки, где дата и время не совпадают. Очевидно, что самым простым способом было бы иметь две разные таблицы и просто объединить дату / время, но сейчас я слишком глубоко разбираюсь.

dtypes каждого столбца:

timeDate_1       datetime64[ns]
hour                      int64
timeDate_2       datetime64[ns]

, который выдает ошибку, когда я выполняю isin операцию:

df[df['timeDate_1'].isin(['timeDate_2', 'hour']) ]

ValueError: ('Unknown string format:', 'timeDate_2')

Что самое простоеспособ сделать это? (Помимо развязки всех столбцов и простого соединения)

1 Ответ

0 голосов
/ 01 ноября 2019

Попробуйте это:

df[
   df['timeDate_1'].isin(df['timeDate_2'])
   | df['timeDate_1'].dt.hour.isin(df['hour']) 
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...