2017-07-26 9 views
3

データフレームは、たとえば df = pd.DataFrame([[1,2、np.nan]、[4,5、 np.nan]、[7,8,9]]) 私はr2がナンされていない場合は、R2の者を使用し、私は意味、R2でR1列の値のベースを変更したい場合ので、それはパンダのデータフレーム列の置き換え方法別の列の値の値のベースB

 sku r1 r2 
    0 1 2 NaN 
    1 4 5 NaN 
    2 7 8 9.0 

だろう値だから、結果は次のようになりそう、r1'valueを交換R1に何の変化

を維持しない:

 sku r1 r2 
    0 1 2 NaN 
    1 4 5 NaN 
    2 7 9.0 9.0 

このように、この例では3番目のケースで8から9.0に変更します。 私はパンダの新しい学習者です。このための解決策を見つけるのに時間がかかります。

ありがとうございました。

答えて

3

あなたはnotnullmaskを使用することができます。

df['r1'] = df['r1'].mask(df['r2'].notnull(), df['r2']) 
print (df) 

    sku r1 r2 
0 1 2.0 NaN 
1 4 5.0 NaN 
2 7 9.0 9.0 

またはloc

df.loc[df['r2'].notnull(), 'r1'] = df['r2'] 
print (df) 
    sku r1 r2 
0 1 2.0 NaN 
1 4 5.0 NaN 
2 7 9.0 9.0 
1

使用np.where

df['r1'] = np.where(df['r2'].notnull(),df['r2'],df['r1']) 
df 

出力:

sku r1 r2 
0 1 2.0 NaN 
1 4 5.0 NaN 
2 7 9.0 9.0 
関連する問題