考慮你有兩個列表(或pandas DataFrame中的列),每個列表都包含一些空值。您需要一個列表,它將一個列表中的空值替換爲另一個列表中的空值(如果存在另一列表中的空值)。使用python/pandas替換第二個列表中的缺失值
例子:
s1 = [1, NaN, NaN]
s2 = [NaN, NaN, 3]
## some function
result = [1, NaN, 3]
假設,如果兩個列表非空,在一些位置,那麼它們匹配,所以我們不必擔心解決衝突。如果是這樣,我知道我可以用一個列表理解解決這個問題:
[x if ~np.isnan(x) else y for (x,y) in zip(s1,s2)]
,或者S1和S2的熊貓數據幀DF列,那麼我們就可以用類似的邏輯和應用功能:
df.apply(lambda x: x.s1 if ~np.isnan(x.s1) else x.s2, axis=1)
但是有沒有更簡單的方法來做到這一點,也許使用一些熊貓的功能?這種手術甚至叫什麼?它有點像聯合體,但是在缺少替代品時保留了排序和空值。