Saya ingin menemukan baris yang berisi string, seperti:
DF[DF.col.str.contains("foo")]
Namun, ini gagal karena beberapa elemen adalah NaN:
ValueError: tidak dapat mengindeks dengan vektor yang mengandung nilai NA / NaN
Jadi saya menggunakan yang dikaburkan
DF[DF.col.notnull()][DF.col.dropna().str.contains("foo")]
Apakah ada cara yang lebih baik?
a
diisi dari CSV, dana
kolom berisi string "nan".pandas
"secara cerdas" mengubahnya menjadiNaN
dan mulai mengeluh ketika saya mencoba melakukannyadf.a.str.contains()
. Jadi ya protip: pastikan untuk mengatur jenis kolomread_csv()
atau setelah itu lakukan sesuatu sepertidf = df.where(pandas.notnull(df), "nan")
LOLdf.loc
dan tidak adildf
?Selain jawaban di atas, saya akan mengatakan untuk kolom yang tidak memiliki nama kata tunggal, Anda dapat menggunakan: -
Semoga ini membantu.
sumber
Saya tidak 100% tentang mengapa (sebenarnya datang ke sini untuk mencari jawabannya), tetapi ini juga berfungsi, dan tidak perlu mengganti semua nilai nan.
Bekerja dengan atau tanpa
.loc
.Saya tidak tahu mengapa ini berfungsi, karena saya memahaminya ketika Anda mengindeks dengan tanda kurung, panda mengevaluasi apa pun yang ada di dalam braket sebagai
True
atauFalse
. Saya tidak tahu mengapa membuat frasa di dalam tanda kurung 'ekstra boolean' memiliki efek apa pun.sumber
Anda juga bisa pola:
sumber
sumber