Как я могу отсортировать данные на основе других данных? - PullRequest
0 голосов
/ 06 февраля 2019

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

1 Ответ

0 голосов
/ 06 февраля 2019

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

import pandas as pd
d1 = ['23.OH3', '28.OG2', '28.OI1', '40.OE1', '50.OF1']
d2 = ['28.OI1', '23.OH3', '40.OE1', '28.OG2']

abc_d = {'batch_id': [1, 1, 2, 2, 3], 'file_number': d1}
xyz_d = {'file_name': d2}

abc = pd.DataFrame(data = abc_d)
xyz = pd.DataFrame(data = xyz_d)

idx = pd.Index(xyz.file_name)
abc.set_index('file_number').loc[idx].reset_index()

Он должен работать до тех пор, пока len(abc) >= len(xyz), строки, отсутствующие в xyz, будутбыть отброшенным.

Редактировать: Вы можете удалить пропущенные строки независимо от len(abc) и len(xyz) следующим образом:

d1 = ['23.OH3', '28.OG2', '28.OI1', '40.OE1']
d2 = ['28.OI1', '23.OH3', '40.OE1', '28.OG2', '50.OF1']

abc_d = {'batch_id': [1, 1, 2, 2], 'file_number': d1}
xyz_d = {'file_number': d2}

abc = pd.DataFrame(data = abc_d)
xyz = pd.DataFrame(data = xyz_d)

idx = pd.Index(xyz.file_number)
not_missing = xyz.file_number.isin(abc.file_number)
idx = idx[not_missing]
abc.set_index('file_number').loc[idx].reset_index()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...