Панды получают все записи с одинаковым идентификатором во всех фреймах данных. - PullRequest
0 голосов
/ 06 декабря 2018

У меня есть список данных.Каждый кадр данных имеет столбец с именем probe_id.Я хочу получить все строки, где probe_id существует во всех фреймах данных.Другими словами, я хочу найти пересечение фреймов данных на probe_id.

Например, скажем, у меня есть 4 фрейма данных, и каждый фрейм данных имеет probe_id '0001'.В этом случае я бы вернул этот ряд.Если probe_id отсутствует в любом из фреймов данных, я хочу пропустить эту строку.

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

Итак, если каждый из 4-х кадров данных имеет 2 столбца, результатом должен быть новый фрейм данных с 8 столбцами, в котором записи probe_id существуют во всех 4-х фреймах данных.

Яиспользуя:

z = reduce(lambda x, y: pd.merge(x, y, on='PROBE_ID', how='inner'), dataframes)

Кажется, это работает, но я не уверен, и есть слишком много записей для проверки.Я не совсем уверен в использовании reduce и lambda, поэтому я был бы признателен, если бы кто-то мог дать мне знать, если это правильно или нет, и если нет, как я мог бы достичь своей цели.

1 Ответ

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

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

df_out = pd.concat([
    x.set_index('dataframes') for x in dataframes
], axis=1, join ='inner').reset_index()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...