In[71]: df
Out[71]:
a b c
0NaN7.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]: df
Out[97]:
a b c
0NaN7.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
atau seperti @root usulkan versi yang lebih jelas:
In[5]: df.isnull().any()Out[5]:
a True
b True
c False
dtype: bool
In[7]: df.columns[df.isnull().any()].tolist()Out[7]:['a','b']
untuk memilih subset - semua kolom yang mengandung setidaknya satu NaNnilai:
In[31]: df.loc[:, df.isnull().any()]Out[31]:
a b
0NaN7.010.0NaN22.0NaN31.07.041.03.057.04.062.06.079.06.083.00.099.00.0
Saya mempunyai masalah di mana saya harus memeriksa banyak kolom secara visual di layar sehingga daftar pendek yang menyaring dan mengembalikan kolom yang menyinggung adalah
nan_cols =[i for i in df.columns if df[i].isnull().any()]
Dalam kumpulan data yang memiliki jumlah kolom yang besar, lebih baik untuk melihat berapa banyak kolom yang berisi nilai nol dan berapa banyak yang tidak.
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))
Sebagai contoh dalam dataframe saya itu berisi 82 kolom, dimana 19 berisi setidaknya satu nilai nol.
Selanjutnya Anda juga dapat secara otomatis menghapus cols dan rows bergantung pada yang memiliki lebih banyak nilai null
Berikut adalah kode yang melakukan ini dengan cerdas:
df.isna().any()[lambda x: x]
bekerja untuk sayaJawaban:
PEMBARUAN: menggunakan Pandas 0.22.0
Versi Pandas yang lebih baru memiliki metode baru 'DataFrame.isna ()' dan 'DataFrame.notna ()'
sebagai daftar kolom:
untuk memilih kolom tersebut (mengandung setidaknya satu
NaN
nilai):Jawaban LAMA:
Coba gunakan isnull () :
atau seperti @root usulkan versi yang lebih jelas:
untuk memilih subset - semua kolom yang mengandung setidaknya satu
NaN
nilai:sumber
df.columns[df.isin['xxx'].any()].tolist()
df.columns[df.eq(search_for_value).any()].tolist()
isna
,notna
?Anda bisa menggunakannya
df.isnull().sum()
. Ini menunjukkan semua kolom dan total NaNs dari setiap fitur.sumber
Saya mempunyai masalah di mana saya harus memeriksa banyak kolom secara visual di layar sehingga daftar pendek yang menyaring dan mengembalikan kolom yang menyinggung adalah
jika itu bermanfaat bagi siapa pun
sumber
Dalam kumpulan data yang memiliki jumlah kolom yang besar, lebih baik untuk melihat berapa banyak kolom yang berisi nilai nol dan berapa banyak yang tidak.
Sebagai contoh dalam dataframe saya itu berisi 82 kolom, dimana 19 berisi setidaknya satu nilai nol.
Selanjutnya Anda juga dapat secara otomatis menghapus cols dan rows bergantung pada yang memiliki lebih banyak nilai null
Berikut adalah kode yang melakukan ini dengan cerdas:
Catatan: Kode di atas menghapus semua nilai nol Anda. Jika Anda ingin nilai nol, proses sebelumnya.
sumber
saya menggunakan tiga baris kode ini untuk mencetak nama kolom yang mengandung setidaknya satu nilai nol:
sumber
Keduanya harus berfungsi:
Metode DataFrame
isna()
atauisnull()
sepenuhnya identik.Catatan : String kosong
''
dianggap False (tidak dianggap NA)sumber
Ini berhasil untuk saya,
1. Untuk mendapatkan Kolom yang memiliki setidaknya 1 nilai nol. (nama kolom)
2. Untuk mendapatkan Kolom dengan jumlah, dengan memiliki setidaknya 1 nilai nol.
[Opsional] 3. Untuk mendapatkan persentase jumlah nol.
sumber