2017-08-29 18 views
1

データフレームがあり、2つの列を処理する必要があります。ABとしましょう。分割に遭遇したNA値

Col Bには、一部に"NA"個の行があります。私はこれを試していた:

df['ratio']= (df['A']/loan_data_df['B'].astype(int)).where(loan_data_df['B']!= 'NA') 

しかし、それは動作しませんでした。どんな助けもありがとう。

+0

「NA」を「np.nan」に置き換えてください。 – MedAli

答えて

0

私はあなたがNaNmissing value)へNA文字列を置換して、パラメータfill_valuedivを使用するためのanother answerのように防ぐNaNため1に置き換える必要があると思う:

df['ratio']= df['A'].div(df['B'].replace('NA', np.nan).astype(float), fill_value=1) 

サンプル:

df = pd.DataFrame({'A':[4,2,3], 
        'B':['NA','4','5']}) 

df['ratio']= df['A'].div(df['B'].replace('NA', np.nan).astype(float), fill_value=1) 
print (df) 
    A B ratio 
0 4 NA 4.0 
1 2 4 0.5 
2 3 5 0.6 

ない場合NaNNA値:

df['ratio']= df['A'].div(df['B'].replace('NA',1).astype(float)) 
print (df) 
    A B ratio 
0 4 NA 4.0 
1 2 4 0.5 
2 3 5 0.6 

しかし、主にそれが必要なだけであるかもしれない、あなたのデータに依存:

df = pd.DataFrame({'A':[4,2,3], 
        'B':[np.nan,4,5]}) 

df['ratio']= df['A'].div(df['B'], fill_value=1) 
print (df) 
      A B ratio 
0 4 NaN 4.0 
1 2 4.0 0.5 
2 3 5.0 0.6   
+0

詳細な回答ありがとうございました。 – user3062229

+0

うれしい助けてよかった! – jezrael

0

あなたが試すことができ、そのためにあなたは、単に、np.nanで 'NA' を交換する必要があります。

df = df.fillna(np.nan) 

パンダは、部門が無効な場所であればどこにでも置く。

>>> import pandas as pd 
>>> import numpy as np 
>>> df = pd.DataFrame({"A": [1, 3, 5, 29], "B": [5, 4, 44, np.nan]}) 
>>> df 
    A  B 
0 1 5.0 
1 3 4.0 
2 5 44.0 
3 29 NaN 
>>> df["A"]/df["B"] 
0 0.200000 
1 0.750000 
2 0.113636 
3   NaN 
dtype: float64 
>>> df["ratio"] = df["A"]/df["B"] 
>>> df 
    A  B  ratio 
0 1 5.0 0.200000 
1 3 4.0 0.750000 
2 5 44.0 0.113636 
3 29 NaN  NaN 
>>> 
関連する問題