Обновите столбец A, где столбец B имеет значение C в Pandas DataFrame - PullRequest
0 голосов
/ 21 ноября 2018

Доброе утро,

Я пытаюсь обновить DataFrame на основе содержимого двух столбцов и сталкиваюсь с проблемами.

В частности, у меня есть столбец с именем IP, другой с именем VISITTIME.Я добавил два столбца с именами OLDEST и NEWEST, которые должны содержать min и max VISITTIME для IP этой строки.

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

df2 = pd.merge(df.groupby('IP')['VISITTIME'].min().to_frame(), 
               df.groupby('IP')['VISITTIME'].max().to_frame(), on="IP") 

Я могу получить минимальное и максимальное время для каждого IP в таблице.Затем я могу повторить это, но я не знаю, как обновить исходный DataFrame.

По сути, я спрашиваю, как мне сделать следующее в pandas:

UPDATE df SET df.OLDEST = df2.OLDEST, df.NEWEST = df2.NEWEST WHERE df.IP=df2.IP; 

Я чувствую, что это должно быть легко, и мне стыдно, что это не так.

Спасибо

1 Ответ

0 голосов
/ 21 ноября 2018

В зависимости от вашей версии панд (я знаю в версии> 0.22.0), существует метод, называемый Dataframe.update .

, который должен предоставить несколько примеров, но несколькопредупреждения:

  • Необходимо убедиться, что оба кадра данных используют IP в качестве индекса, иначе этот метод не будет работать.
  • Имена столбцов (серий) должны быть одинаковыми,поэтому он не потребует ссылки на местоположение или столбец.
  • Вы можете перезаписывать только значения NA, но не применимо для того, что вы здесь описываете.

DataFrame.update(other, join='left', overwrite=True, filter_func=None, raise_conflict=False)

Изменить на месте, используя значения не-NA из другого DataFrame.

Выравнивание по индексам.Нет возвращаемого значения.

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