与熊猫自我加入
问题内容:
我想对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')
但是,它总共会产生其他东西。如何正确做?
问题答案:
join
与 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