apa cara tercepat / paling sederhana untuk menjatuhkan nilai nan dan inf / -inf dari panda DataFrame tanpa mengatur ulang mode.use_inf_as_null
? Saya ingin dapat menggunakan argumen subset
dan , kecuali dengan nilai yang dianggap hilang, seperti:how
dropna
inf
df.dropna(subset=["col1", "col2"], how="all", with_inf=True)
apakah ini mungkin? Apakah ada cara untuk mengatakan dropna
untuk memasukkan inf
dalam definisi nilai yang hilang?
inf
nilai - nilai ke yang telah ditentukanint
seperti0
, di kolom tertentu?.replace(..., 0)
. Untuk melakukan pada kolom Anda memperbarui kolom-kolom yaitudf[cols] = df[cols].replace(..., 0)
replace
tidak berfungsi di tempat, jadi yang baruDataFrame
dikembalikanDengan konteks opsi, ini dimungkinkan tanpa pengaturan secara permanen
use_inf_as_na
. Sebagai contoh:Tentu saja dapat diatur untuk memperlakukan
inf
sebagaiNaN
permanen denganUntuk versi yang lebih lama, ganti
use_inf_as_na
denganuse_inf_as_null
.sumber
use_inf_as_null
telah ditinggalkan dan akan dihapus dalam versi yang akan datang. Gunakanuse_inf_as_na
sebagai gantinya. Tambahkan ke / perbarui jawaban?inf
sebagai nol di tingkat pengaturan global daripada tingkat operasional. Ini berpotensi menghemat waktu untuk memasukkan nilai terlebih dahulu.Berikut adalah metode lain yang digunakan
.loc
untuk mengganti inf dengan nan pada Seri:Jadi, dalam menanggapi pertanyaan awal:
sumber
Gunakan (cepat dan sederhana):
Jawaban ini didasarkan pada jawaban DougR dalam pertanyaan lain. Berikut contoh kode:
Hasil:
sumber
Namun solusi lain adalah dengan menggunakan
isin
metode ini. Gunakan untuk menentukan apakah setiap nilai tidak terbatas atau hilang dan kemudian rantaiall
metode untuk menentukan apakah semua nilai dalam baris tidak terbatas atau hilang.Akhirnya, gunakan negasi dari hasil itu untuk memilih baris yang tidak memiliki semua nilai tak terbatas atau hilang melalui pengindeksan boolean.
sumber
Solusi di atas akan memodifikasi
inf
s yang tidak ada di kolom target. Untuk memperbaiki itu,sumber
{v: lst for v in cols}
Anda bisa menggunakannya
pd.DataFrame.mask
bersamanp.isinf
. Anda harus memastikan terlebih dahulu seri dataframe Anda semuanya bertipefloat
. Kemudian gunakandropna
dengan logika Anda yang ada.sumber