In[71]: dfOut[71]:
a b c0NaN7.0010.0NaN422.0NaN431.07.0041.03.0957.04.0962.06.0979.06.0483.00.0999.00.01In[72]: df.isna().any()Out[72]:
a True
b True
c False
dtype: bool
In[97]: dfOut[97]:
a b c0NaN7.0010.0NaN422.0NaN431.07.0041.03.0957.04.0962.06.0979.06.0483.00.0999.00.01In[98]: pd.isnull(df).sum()>0Out[98]:
a True
b True
c False
dtype: bool
lub jak @root zaproponował jaśniejszą wersję:
In[5]: df.isnull().any()Out[5]:
a True
b True
c False
dtype: boolIn[7]: df.columns[df.isnull().any()].tolist()Out[7]:['a','b']
aby wybrać podzbiór - wszystkie kolumny zawierające co najmniej jedną NaNwartość:
In[31]: df.loc[:, df.isnull().any()]Out[31]:
a b0NaN7.010.0NaN22.0NaN31.07.041.03.057.04.062.06.079.06.083.00.099.00.0
Miałem problem polegający na tym, że miałem za dużo kolumn do wizualnej inspekcji na ekranie, więc krótka lista comp, która filtruje i zwraca naruszające kolumny to
nan_cols =[i for i in df.columns if df[i].isnull().any()]
W zestawach danych zawierających dużą liczbę kolumn jeszcze lepiej jest sprawdzić, ile kolumn zawiera wartości null, a ile nie.
print("No. of columns containing null values")print(len(df.columns[df.isna().any()]))print("No. of columns not containing null values")print(len(df.columns[df.notna().all()]))print("Total no. of columns in the dataframe")print(len(df.columns))
Na przykład w mojej ramce danych zawierała 82 kolumny, z których 19 zawierało co najmniej jedną wartość null.
Ponadto możesz również automatycznie usuwać kolumny i wiersze w zależności od tego, która ma więcej wartości null.
Oto kod, który robi to inteligentnie:
df.isna().any()[lambda x: x]
działa dla mnieOdpowiedzi:
UPDATE: używając Pandas 0.22.0
Nowsze wersje Pandy mają nowe metody „DataFrame.isna ()” i „DataFrame.notna ()”
jako lista kolumn:
aby wybrać te kolumny (zawierające co najmniej jedną
NaN
wartość):STARA odpowiedź:
Spróbuj użyć isnull () :
lub jak @root zaproponował jaśniejszą wersję:
aby wybrać podzbiór - wszystkie kolumny zawierające co najmniej jedną
NaN
wartość:źródło
df.columns[df.isin['xxx'].any()].tolist()
df.columns[df.eq(search_for_value).any()].tolist()
isna
,notna
?Możesz użyć
df.isnull().sum()
. Pokazuje wszystkie kolumny i łączną wartość NaN każdej funkcji.źródło
Miałem problem polegający na tym, że miałem za dużo kolumn do wizualnej inspekcji na ekranie, więc krótka lista comp, która filtruje i zwraca naruszające kolumny to
jeśli to komuś pomoże
źródło
W zestawach danych zawierających dużą liczbę kolumn jeszcze lepiej jest sprawdzić, ile kolumn zawiera wartości null, a ile nie.
Na przykład w mojej ramce danych zawierała 82 kolumny, z których 19 zawierało co najmniej jedną wartość null.
Ponadto możesz również automatycznie usuwać kolumny i wiersze w zależności od tego, która ma więcej wartości null.
Oto kod, który robi to inteligentnie:
Uwaga: powyższy kod usuwa wszystkie wartości null. Jeśli chcesz mieć wartości null, przetwórz je wcześniej.
źródło
Używam tych trzech wierszy kodu, aby wydrukować nazwy kolumn, które zawierają co najmniej jedną wartość null:
źródło
Oba powinny działać:
DataFrame
isna()
lubisnull()
są całkowicie identyczne.Uwaga : puste ciągi
''
są uważane za fałszywe (nie uważane za NA)źródło
To zadziałało dla mnie,
1. Aby uzyskać kolumny mające co najmniej 1 wartość null. (nazwy kolumn)
2. Aby uzyskać kolumny z liczbą, z co najmniej 1 wartością zerową.
[Opcjonalnie] 3. Aby uzyskać procent wartości zerowej.
źródło