如果我有两个系列:
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])
我想用s1
和0
的{{1}}缺少值来填充s2
的缺失值。但如果两者都缺失,我想保留失踪。
我可以:
1
但这会返回:
s1.fillna(0).add(s2.fillna(1))
我想要:
0 2.0
1 2.0
2 3.0
3 1.0
dtype: float64
答案 0 :(得分: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 :(得分: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