簡體   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