Я хотел бы выполнить самообучение в кадре данных Pandas, чтобы некоторые строки добавлялись к исходным строкам. Каждая строка имеет маркер «i», указывающий, какая строка должна быть присоединена к нему справа.self-join with Pandas
d = pd.DataFrame(['A','B','C'], columns = ['some_col'])
d['i'] = [2,1,1]
In [17]: d
Out[17]:
some_col i
0 A 2
1 B 1
2 C 1
Желаемый выход:
some_col i some_col_y
0 A 2 C
1 B 1 B
2 C 1 B
То есть, строка 2 получает добавляется к строке 0, строка 1 в строке 1, строка 1 к строке 2 (как указано в I).
Моя идея о том, как идти об этом было
pd.merge(d, d, left_index = True, right_on = 'i', how = 'left')
Но он производит что-то совсем другое. Как это сделать правильно?
Мне нравится ваш ответ больше, чем у меня. Если OP нуждается в виртуальном столбце - это можно сделать следующим образом: 'd.assign (some_col_y = d ['some_col']. Loc [d ['i']]. Values)' – MaxU