2017-11-06 7 views
1

異なる行数と同じ列数を持つ複数のデータセットがあります。 私は例えば各列のNaN値は、これら2つのデータセットを考える見つけるしたいと思います:Pandasの複数の列でNaN値を操作する

dataset1 :   dataset2: 
a b     a b 
1 10     2 11 
2 9     3 12 
3 8     4 13 
4 nan    nan 14 
5 nan    nan 15 
6 nan    nan 16 

私はデータセットAおよびBでNaN値を見つけたい: それはB列に発生した場合、すべての削除ナノ値を持つ行。

a=pd.notnull(data['a'].values.any()) 
b= pd.notnull((data[b'].values.any())) 
if a: 
    data = data.dropna(subset=['a']) 
if b: 
    data[['a']] = data[['a']].fillna(value=0) 

正しく動作しません:それはコラムで発生した場合、その後、これは私のスニペットコード0

を持つ値であることを記入してください。

答えて

2

制御フローなしfillnaとdropnaが必要になります。

df.fillna({'a':0}).dropna() 
Out[1319]: 
    a b 
0 2.0 11 
1 3.0 12 
2 4.0 13 
3 0.0 14 
4 0.0 15 
5 0.0 16 
+0

列bにまだナノ値があります – Elham

+1

@AlterNative df = df.fillna .... – Wen

+0

@AlterNativeには、受け入れられた回答として1つしか選択できません( - : – piRSquared

3

あなただけEDIT

df=df.fillna({'a':0}).dropna() 

あなたはここに 'b' を必要としないdictの

df=df.fillna({'a':0,'b':np.nan}).dropna() 

にあなたの状態を渡し

data = data.dropna(subset=['b']).fillna(0) 
関連する問題