我想在Pandas数据帧上执行自联接,以便将某些行附加到原始行.每行都有一个标记’i’,表示右边应该附加哪一行.
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')
但它完全产生了其他东西.怎么做正确?
解决方法
加入on =’i’
d.join(d.drop('i',1),on='i',rsuffix='_y') some_col i some_col_y 0 A 2 C 1 B 1 B 2 C 1 B