
8.2
データセットの結合とマージ
265
8.2.4
重複のあるデータの結合
データのマージ操作とも連結操作とも言いがたいような状況もあります。
2
つのデータセットのイン
デックスの一部が重複しているか、完全に重複しているような場合です。具体的な例として、
NumPy
の
where
関数を使って、インデックスが重複したデータの一部だけを結合する例を見てみましょう。
where
関数は行列指向の
if-else
文
*
1
で、
if-else
の処理をベクトル化できます。
In [108]: a = pd.Series([np.nan, 2.5, 0.0, 3.5, 4.5, np.nan],
.....: index=['f', 'e', 'd', 'c', 'b', 'a'])
In [109]: b = pd.Series([0., np.nan, 2., np.nan, np.nan, 5
.],
.....: index=['a', 'b', 'c', 'd', 'e', 'f'])
In [110]: a
Out[110]:
f NaN
e 2.5
d 0.0
c 3.5
b 4.5
a NaN
dtype: float64
In [111]: b
Out[111]:
a 0.0
b NaN
c 2.0
d NaN
e NaN
f 5.0
dtype: float64
In [112]: np.where(pd.isnull(a), b, a) # a
が欠損値の要素には
b
から値を補う
Out[112]: array([ 0. , 2.5, 0. ...