2016-09-06 15 views
5

Bu gerçekten garip. Bir panda veri dosyasından eksik veri ile satırları düşürmek için birkaç yolu denedim, ancak bunların hiçbiri işe yaramıyor. Bu kod (Ben yöntemlerden sadece yorumsuz biri kullanılır - ama bunlar farklı modifikasyonlar kullanılan üç - bu sonuncusu): Pandalar - eksik verilerle satırların silinmesi .isnull(), notnull(), dropna() kullanılarak çalışmayan satırlar

import pandas as pd 
Test = pd.DataFrame({'A':[1,2,3,4,5],'B':[1,2,'NaN',4,5],'C':[1,2,3,'NaT',5]}) 
print(Test) 
#Test = Test.ix[Test.C.notnull()] 
#Test = Test.dropna() 
Test = Test[~Test[Test.columns.values].isnull()] 
print "And now" 
print(Test) 

Ama her durumda

, benim hemen hepsi bu kadar :

A B C 
0 1 1 1 
1 2 2 2 
2 3 NaN 3 
3 4 4 NaT 
4 5 5 5 
And now 
    A B C 
0 1 1 1 
1 2 2 2 
2 3 NaN 3 
3 4 4 NaT 
4 5 5 5 

Yaptığım herhangi bir hata var mı? ya da sorun nedir? İdeal olarak, bu almak istiyorum:

A B C 
0 1 1 1 
1 2 2 2 
4 5 5 5 
+3

yapmak ve ve np.datetime64 ('NaN') '- .dropna()' ile daha sonra düzgün çalışacak ... –

+0

dize veya np.nan herhangi bir değişiklik yapmadı :( – durbachit

cevap

7

Sizin örnek DF NaN ve NaT olarak dizeleri .dropna, .notnull ve ortak sahiptir. Falsey düşünmüyoruz; dolayısıyla kullanabileceğiniz örnek ... verir

df[~df.isin(['NaN', 'NaT']).any(axis=1)] 

verilen:

A B C 
0 1 1 1 
1 2 2 2 
4 5 5 5 

Eğer np.nan ve np.datetime64('NaT') kullanımının DF gibi (not olsaydı

df = pd.DataFrame({'A':[1,2,3,4,5],'B':[1,2,np.nan,4,5],'C':[1,2,3,np.datetime64('NaT'),5]}) 

Sonra df.dropna() çalışan veriyorum:

yerine dizeleri 3212
A B C 
0 1 1.0 1 
1 2 2.0 2 
4 5 5.0 5 

B numaralı sütunun, NaN değerlerini depolamak için gereken tam sayı yerine float olduğunu unutmayın.

+0

Cool, ilk çözüm işe yaradı:) Teşekkür ederim! – durbachit

4

orig verilerine bu deneyin: yerine np.nan` `arasında` NaT`

Test.replace(["NaN", 'NaT'], np.nan, inplace = True) 
Test = Test.dropna() 
Test 

Ya verileri değiştirme ve aslında dizeleri `NaN` var mı bu

import pandas as pd 
Test = pd.DataFrame({'A':[1,2,3,4,5],'B':[1,2,np.nan,4,5],'C':[1,2,3,pd.NaT,5]}) 
print(Test) 
Test = Test.dropna() 
print(Test) 



    A B C 
0 1 1.0 1 
1 2 2.0 2 
4 5 5.0 5 
+0

Tamam, bu da işe yaradı! (yerinin değiştirilmesi) – durbachit

İlgili konular