2016-06-17 13 views
0

を欠損値:私はs1いっぱいにしたいあなたは私は2つのシリーズがある場合は、別途

import pandas as pd 
import numpy as np 

s1 = pd.Series([1, np.nan, 2, np.nan]) 
s2 = pd.Series([1, 2, np.nan, np.nan]) 

「各シリーズを充填パンダシリーズ追加するにはどうすればよい10s2の欠損値との欠損値を。しかし、私は両方が欠けている場合、失われたものを保持したい。

私ができます

s1.fillna(0).add(s2.fillna(1)) 

が、これが返されます。

0 2.0 
1 2.0 
2 3.0 
3 1.0 
dtype: float64 

を私がしたい:

0 2.0 
1 2.0 
2 3.0 
3 NaN 
dtype: float64 

答えて

2

両方が欠落している場合、私はちょうどあなたの結果をオーバーライドします:

In [22]: s1.fillna(0).add(s2.fillna(1)).where(~s1.isnull() | ~s2.isnull(), np.nan) 
Out[22]: 
0  2 
1  2 
2  3 
3 NaN 
dtype: float64 
1

私はあなたのことができると思います:

df = pd.concat([s1, s2], axis=1) 
df[~df.isnull().all(axis=1)].fillna({c: c for c in df.columns}).append(df[df.isnull().all(axis=1)]).sum(axis=1) 

取得する:

0 2.0 
1 2.0 
2 3.0 
3 NaN 
関連する問題