Pandas: 辞書を使用して nan 値を埋める方法
fillna()関数を辞書とともに使用して、pandas DataFrame の 1 つの列の NaN 値を別の列の値に基づいて置き換えることができます。
これを行うには、次の基本構文を使用できます。
#define dictionary dict = {' A ': 5 , ' B ': 10 , ' C ': 15 , ' D ': 20 } #replace values in col2 based on dictionary values in col1 df[' col2 '] = df[' col2 ']. fillna (df[' col1 ']. map (dict))
次の例は、この構文を実際に使用する方法を示しています。
例: 辞書を使用して Pandas に NaN 値を入力する
さまざまな小売店で行われた売上に関する情報を含む次のパンダ データフレームがあるとします。
import pandas as pd import numpy as np #createDataFrame df = pd. DataFrame ({' store ': ['A', 'A', 'B', 'C', 'D', 'C', 'B', 'D'], ' sales ': [12, np.nan, 30, np.nan, 24, np.nan, np.nan, 13]}) #view DataFrame print (df) blind sales 0 to 12.0 1 A NaN 2 B 30.0 3 C NaN 4 D 24.0 5CNaN 6BNaN 7 D 13.0
Sales列には複数の NaN 値があることに注意してください。
Store列の特定の値に対応する値を使用して、 Sales列にこれらの NaN を設定したいとします。
これを行うには、次の構文を使用できます。
#define dictionary dict = {' A ': 5 , ' B ': 10 , ' C ': 15 , ' D ': 20 } #replace values in sales column based on dictionary values in store column df[' sales '] = df[' sales ']. fillna (df[' store ']. map (dict)) #view updated DataFrame print (df) blind sales 0 to 12.0 1 A 5.0 2 B 30.0 3C 15.0 4 D 24.0 5C 15.0 6 B 10.0 7 D 13.0
辞書を使用して、売上列を次のように置き換えました。
- 店舗がAの場合、 Sales の NaN を値5に置き換えます。
- 店舗がBの場合、 sales の NaN を値10に置き換えます。
- store がCの場合、 sales の NaN を値15に置き換えます。
- 店舗がDの場合、 sales の NaN を値20に置き換えます。
fillna()関数の完全なオンライン ドキュメントは、ここで見つけることができます。
追加リソース
次のチュートリアルでは、パンダで他の一般的な操作を実行する方法を説明します。