2016-04-01 19 views
0

Veri kümemde herhangi bir boş değer 0'a ayarlanabilir ve null olmayan değerler 1'e ayarlanacak bir sütun oluşturmaya çalışıyorum. burada, AncakPython: 0 Boşsa ve 0 değilse

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

benim girişimi gerisi nerede: 0 boş değerler ayarlama

NaN 
6 
5 
NaN 
2 
NaN 
3 
5 
4 

bunu yaparken kadar kolay olabilir: kabaca söylemek gerekirse, '9Age' olarak adlandırılan verilerin sütun şöyle : Değerin null olup olmadığına karar vermek aşağıda belirtilmiştir:

gözlem Çünkü eğer boş, ama yanlış değilse

olduğunu
False 
True 
True 
False 
True 
False 
True 
True 
True 

, True döndürür:

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

Bu 10 '9Age' değiştirir. Bu mantık ardından, aldı sonraki adım bu yazıyordu:

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

Ancak, benim dehşet, AgeExist

NaN 
NaN 
NaN 
NaN 
NaN 
NaN 
NaN 
NaN 
NaN 

Veya, boş değerler bir demet verir. Nerede yanlış gittim ve tüm bunlara yaklaşmanın daha iyi bir yolu ne olurdu?

+0

As @John, "AgeExist = df ['9Age'] .şimdi demedi. Notnull(). Astype (int)" hile yapacak – MaxU

cevap

2

Ben çılgınca Yanılmıyorsam Sen .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

kullanarak tamsayı temsilciliklerine Doğru/Yanlış değerlerin bir Series dönüştürebilir, bu True basit bir mesele 'True' değil bu.

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

Sizin için çalışmalı.

+0

Hile yaptık! Bunun varsayım çünkü doğru ve yanlış bu durumda boolean operatörlerdir ve gerçekte verilerde yazılmış olan bir şey değildir. Her iki durumda da teşekkürler! –

+0

Bu doğru. Cevabım sorununuzu çözerse, yeşil onay işaretini kullanarak soldaki <------ 'işaretini kabul edildi olarak işaretlemenin yolu olduğunu unutmayın :) –