227x4 DataFrame'im var, ülke isimleri ve rakamsal değerleri temizlemek için (wrangle?).Nasıl bir boolean maskesi kullanarak pandas DataFrame nan 'ile herhangi bir dizeleri' yerine nasıl?
İşte DataFrame bir soyutlama:
import pandas as pd
import random
import string
import numpy as np
pdn = pd.DataFrame(["".join([random.choice(string.ascii_letters) for i in range(3)]) for j in range (6)], columns =['Country Name'])
measures = pd.DataFrame(np.random.random_integers(10,size=(6,2)), columns=['Measure1','Measure2'])
df = pdn.merge(measures, how= 'inner', left_index=True, right_index =True)
df.iloc[4,1] = 'str'
df.iloc[1,2] = 'stuff'
print(df)
Country Name Measure1 Measure2
0 tua 6 3
1 MDK 3 stuff
2 RJU 7 2
3 WyB 7 8
4 Nnr str 3
5 rVN 7 4
Nasıl ülke adı dokunmadan tüm sütunlarda np.nan
ile dize değerleri yerine do?
: ([1], [2], [3], [4], [5], [6], [7], [8]), ancak bir bulamadık Ben madenle ilgili birkaç soru baktım
mask = df.loc[:,measures.columns].applymap(lambda x: isinstance(x, (int, float))).values
print(mask)
[[ True True]
[ True False]
[ True True]
[ True True]
[False True]
[ True True]]
# I thought the following would replace by default false with np.nan in place, but it didn't
df.loc[:,measures.columns].where(mask, inplace=True)
print(df)
Country Name Measure1 Measure2
0 tua 6 3
1 MDK 3 stuff
2 RJU 7 2
3 WyB 7 8
4 Nnr str 3
5 rVN 7 4
# this give a good output, unfortunately it's missing the country names
print(df.loc[:,measures.columns].where(mask))
Measure1 Measure2
0 6 3
1 3 NaN
2 7 2
3 7 8
4 NaN 3
5 7 4
Bu endişemi yanıtladı. ilgi
"Bir meta-soru zorlamak i Burada bir soruyu formüle etmek için 3 saatten fazla sürüyor mu (araştırma dahil)? ” - Evet. [Yığın] ve tüm Yığın Değişim ağının başarısı, içeriğinin, hem soruların hem de cevapların yüksek kalitesine dayanmaktadır. Birkaç dakika içinde yüksek kaliteli bir soru arayamazsın. Şahsen, gerekli çabayı saatler arasında günlerin sıralarına koyardım. Kesinlikle bir gün veya daha fazlasını bir cevapla harcadım ve bekçinin en azından daha fazla çaba sarf etmesini bekliyorum. –
Yan not: meta sorular [meta] 'da istenmelidir. –
@ JörgWMittag Sadece kendimi denemekten vazgeçtikten sonra soruyu yazmak için harcanan zamanı sayıyordum. Bunu saymak zorunda olsaydım, gerçekten günler olurdu. Önümde birkaç saatim olduğunda metada bir soru yapacağım. Sorumu sormak için çok zaman ayırmakta aptalca hissediyordum. Ama şimdi daha iyi hissediyorum ve cevabın kalitesi, çabaya değdiğini kanıtlıyor. Teşekkür ederim! –