在Pandas中将Index中的两个数据帧组合在一起

时间:2017-09-25 16:08:11

标签: pandas

我有两个不同大小的数据帧pin1和pin2具有不同的索引,即pin1具有索引(DispatchTime, Double)而pin2具有values=['0','1','7']。我想将两者结合起来形成['2','4']。我尝试使用'外部'加入,但它正在将索引值更改为['0','1','2','4','7']

['0','1','2','3','4']

预期产出:

In [1]: pin1=  pd.Series(np.random.randn(2), index=['2', '4'])
In [2]: pin2= pd.Series(np.random.randn(3), index=['0', '1', '7'])    
In [3]: pin3=pd.merge(pin1,pin2,how='outer')
In [4]: pin3
Out [4]: 
0    0.2941
1    0.2869
2    1.7098
3   -0.2126
4    0.2696

3 个答案:

答案 0 :(得分:0)

如果索引集不相交,您可以使用pd.concat

pd.concat([pin1, pin2]).sort_index()

答案 1 :(得分:0)

使用combine_first

In [3732]: pin1.combine_first(pin2)
Out[3732]:
0   -0.820341
1    0.492719
2   -0.785723
4   -1.815021
7    2.027267
dtype: float64

或者,append

In [3734]: pin1.append(pin2).sort_index()
Out[3734]:
0   -0.820341
1    0.492719
2   -0.785723
4   -1.815021
7    2.027267
dtype: float64

详细

In [3735]: pin1
Out[3735]:
2   -0.785723
4   -1.815021
dtype: float64

In [3736]: pin2
Out[3736]:
0   -0.820341
1    0.492719
7    2.027267
dtype: float64

答案 2 :(得分:0)

或使用align

pin1.align(pin2,join='outer')[0].fillna(pin1.align(pin2,join='outer')[1])
Out[991]: 
0   -0.278627
1    0.009388
2   -0.655377
4    0.564739
7    0.793576
dtype: float64