[英]Pandas: get unique elements then merge
我认为这应该很简单,但我很难找到这个问题的解决方案,也许是因为我不知道最好的词汇。 但是为了说明,假设我有三个数据框:
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
我认为它一定是某种外部合并,但到目前为止我还没有让它起作用。 有人知道解决这个问题的最佳方法吗?
对所有DataFrame
使用concat
和DataFrame.set_index
:
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.