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