Beyaz boşluk (herhangi bir miktar) içeren bir Pandas veri çerçevesindeki tüm değerleri bulmak ve bu değerleri NaN'lerle değiştirmek istiyorum.
Bunun nasıl geliştirilebileceğine dair bir fikriniz var mı?
Temel olarak şunu döndürmek istiyorum:
A B C
2000-01-01 -0.532681 foo 0
2000-01-02 1.490752 bar 1
2000-01-03 -1.387326 foo 2
2000-01-04 0.814772 baz
2000-01-05 -0.222552 4
2000-01-06 -1.176781 qux
Bunun içine:
A B C
2000-01-01 -0.532681 foo 0
2000-01-02 1.490752 bar 1
2000-01-03 -1.387326 foo 2
2000-01-04 0.814772 baz NaN
2000-01-05 -0.222552 NaN 4
2000-01-06 -1.176781 qux NaN
Bunu aşağıdaki kodla yapmayı başardım, ama adamım bu çirkin. Pythonic değil ve eminim pandaların en verimli kullanımı da değildir. Her sütunda döngü yapıyorum ve beyaz boşluklarla eşleşen her bir değer için normal ifade araması yapan bir işlev uygulayarak oluşturulan bir sütun maskesine karşı boole değişimi yapıyorum.
for i in df.columns:
df[i][df[i].apply(lambda i: True if re.search('^\s*$', str(i)) else False)]=None
Yalnızca boş dizeler içerebilen alanlar arasında yineleme yapılarak biraz optimize edilebilir:
if df[i].dtype == np.dtype('object')
Ama bu pek bir gelişme değil
Ve son olarak, bu kod, hedef dizeleri, Pandaların gibi işlevlerle çalışan Yok olarak ayarlar fillna()
, ancak NaN
yerine doğrudan yerine bir ekleyebilseydim, bütünlük için iyi olurdu None
.
replace
bir normal ifadeyle kullanabilmektir ... (belki bu bir özellik olarak talep edilmelidir).