繁体   English   中英

Pandas:获取唯一元素然后合并

[英]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使用concatDataFrame.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM