データフレームがあり、2つの列を処理する必要があります。A
とB
としましょう。分割に遭遇したNA値
Col B
には、一部に"NA"
個の行があります。私はこれを試していた:
df['ratio']= (df['A']/loan_data_df['B'].astype(int)).where(loan_data_df['B']!= 'NA')
しかし、それは動作しませんでした。どんな助けもありがとう。
データフレームがあり、2つの列を処理する必要があります。A
とB
としましょう。分割に遭遇したNA値
Col B
には、一部に"NA"
個の行があります。私はこれを試していた:
df['ratio']= (df['A']/loan_data_df['B'].astype(int)).where(loan_data_df['B']!= 'NA')
しかし、それは動作しませんでした。どんな助けもありがとう。
私はあなたがNaN
(missing value)へNA
文字列を置換して、パラメータfill_value
でdiv
を使用するための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
ない場合NaN
NA
値:
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
詳細な回答ありがとうございました。 – user3062229
うれしい助けてよかった! – jezrael
あなたが試すことができ、そのためにあなたは、単に、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
>>>
「NA」を「np.nan」に置き換えてください。 – MedAli