import numpy as np
import pandas as pd
from pandas import Series,DataFrame
# いくつかサンプルになるデータを作ります。
ser1 = Series([2,np.nan,4,np.nan,6,np.nan],
index=['Q','R','S','T','U','V'])
# 長さを同じにします。
ser2 = Series(np.arange(len(ser1), dtype=np.float64),
index=['Q','R','S','T','U','V'])
ser1
ser2
# Now let's get a series where the value of ser1 is chosen if ser2 is NAN,otherwise let the value be ser1
Series(np.where(pd.isnull(ser1),ser2,ser1),index=ser1.index)
# 同じ事を、Seriesが持つメソッドで実現できます。
ser1.combine_first(ser2)
# ser1がNaNであれば、ser2の値を使う。
# 奇数と偶数からなるDataFrameを作ります。
dframe_odds = DataFrame({'X': [1., np.nan, 3., np.nan],
'Y': [np.nan, 5., np.nan, 7.],
'Z': [np.nan, 9., np.nan, 11.]})
dframe_evens = DataFrame({'X': [2., 4., np.nan, 6., 8.],
'Y': [np.nan, 10., 12., 14., 16.]})
dframe_odds
dframe_evens
# 先に奇数のDataFrame、NaNなら、偶数の方をとって、2つのDataFrameをつなげてみます。
dframe_odds.combine_first(dframe_evens)