2016-04-01 7 views
0

null値を0に設定できるように、データセット内に列を作成しようとしています。最初は、my 「9Age」と呼ばれるデータの列、大まかに言えば、次のようになります。Python:nullの場合は0、そうでない場合は1

NaN 
6 
5 
NaN 
2 
NaN 
3 
5 
4 

0にnull値を設定すると、これを行うことと同じくらい簡単にすることができます:

Age0 = df['9Age'].fillna(0) 

はしかし、ここで私の試みの残りの部分です:値がnullかどうかを決定するには、以下のようにします。

それがある場合に観測がnullが、偽でない場合、それはTrueを返し、ある

False 
True 
True 
False 
True 
False 
True 
True 
True 

:10

Age1 = df['9Age'].notnull() 

これはに '9Age' を変更します。このロジックに続いて、私が取った次のステップは、これを書いていた:

AgeExist = Age1.map({'False':0, 'True': 1}) 

しかし、私の失望に、AgeExistは

NaN 
NaN 
NaN 
NaN 
NaN 
NaN 
NaN 
NaN 
NaN 

それとも、null値の束を生成します。私はどこが間違っていたのでしょうか?そして、これにもっと近づくにはどうすればよいでしょうか?

+0

@Johnはすでに 'AgeExist = df ['9Age']と言っています。notnull()。astype(int)'はトリックを行います – MaxU

答えて

2

私は乱暴に誤解だ場合を除きあなたは.astype

import pandas as pd 
import numpy as np 

df = pd.DataFrame() 

df['col'] = [np.NaN, 6, 5, np.NaN] 
col = df['col'].notnull() 
col.astype(int) 
3

を使用して、その整数表現に真/偽値のシリーズに変換することができますが、それはTrueの単純な問題では'True'ではないのです。

AgeExist = Age1.map({False:0, True: 1}) 

あなたのために働く必要があります。

+0

トリックをやりました!私はこれが真であると仮定しています。この場合、Falseは論理演算子であり、データに実際に書き込まれたものではありません。 いずれにしても、ありがとう! –

+0

それは正しいです。私の答えがあなたの問題を解決するなら、左の '------'に緑色のチェックを使用して、それが受け入れられたと印をつけることができることに注意してください:) –

関連する問題