我认为这应该很简单,但我很难寻找这个问题的解决方案,也许是因为我不知道最好的词汇。但为了说明这一点,假设我有三个数据框:
df1 = df({'id1':['1','2','3'], 'val1':['a','b','c']})
df2 = df({'id2':['1','2','4'], 'val2':['d','e','f']})
df3 = df({'id3':['1','5','6'], 'val3':['g','h','i']})
我想要得到的是:
comb_id val1 val2 val3
1 a d g
2 b e n.d.
3 c n.d. n.d.
4 n.d. f n.d.
5 n.d. n.d. h
6 n.d. n.d. i
我认为它一定是某种外部合并,但到目前为止我还没有让它工作。有人知道解决这个问题的最佳方法吗?
最佳答案
使用concat
与 DataFrame.set_index
对于所有 DataFrame
:
df = pd.concat([df1.set_index('id1'),
df2.set_index('id2'),
df3.set_index('id3')], axis=1, sort=True)
print (df)
val1 val2 val3
1 a d g
2 b e NaN
3 c NaN NaN
4 NaN f NaN
5 NaN NaN h
6 NaN NaN i
如有必要,请替换缺失值,添加 DataFrame.fillna
:
df = pd.concat([df1.set_index('id1'),
df2.set_index('id2'),
df3.set_index('id3')], axis=1, sort=True).fillna('n.d.')
print (df)
val1 val2 val3
1 a d g
2 b e n.d.
3 c n.d. n.d.
4 n.d. f n.d.
5 n.d. n.d. h
6 n.d. n.d. i
关于python - Pandas:获取独特的元素然后合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59927915/