Порядок индексов случайного кадра данных - PullRequest
0 голосов
/ 13 октября 2018

У меня есть два DataFrame, а именно A и B.B генерируется путём перемешивания строк A.Я хотел бы знать каждую строку B, каков индекс той же строки в A.

Пример:

A=pd.DataFrame({"a":[1,2,3],"b":[1,2,3],"c":[1,2,3]})
B=pd.DataFrame({"a":[2,3,1],"b":[2,3,1],"c":[2,3,1]})

A
    a   b   c
0   1   1   1
1   2   2   2
2   3   3   3

B
    a   b   c
0   2   2   2
1   3   3   3
2   1   1   1

Ответ должен быть [1,2,0], потому чтоB равно A.loc[[1,2,0]].Мне интересно, как сделать это эффективно, так как мои A и B большие.

Ответы [ 2 ]

0 голосов
/ 13 октября 2018

использование IIUC merge

pd.merge(B.reset_index(), A.reset_index(), 
                      left_on = A.columns.tolist(),
                      right_on = B.columns.tolist()).iloc[:,-1].values

array([1, 2, 0], dtype=int64)
0 голосов
/ 13 октября 2018

Я нашел вероятное решение, используя Dataframe.merge

A=pd.DataFrame({"a":[1,2,3],"b":[1,2,3],"c":[1,2,3]})
B=pd.DataFrame({"a":[2,3,1],"b":[2,3,1],"c":[2,3,1]})

A['index_a'] = A.index
B['index_b'] = B.index

merge_df= pd.merge(A, B, left_on=['a', 'b', 'c'], right_on=['a', 'b', 'c'])

Где merge_df равно

   a  b  c  index_a  index_b
0  1  1  1        0        2
1  2  2  2        1        0
2  3  3  3        2        1

Теперь вы можете ссылаться на строки из A или BКадр данных

Пример Вы знаете, что строка с индексом 0 в A находится в индексе 2 в B

ПРИМЕЧАНИЕ Строки, которые не совпадают ни на одном из данных, не будут отображаться в merge_df

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