Sütundaki bazı değerler eksikse (NaN
) ve sonra sayısal değere dönüştürülürse, her zaman dtype
, float
'dur. Değerleri int
'a dönüştüremezsiniz. Sadece float
, , NaN
, float
'dur.
print (type(np.nan))
<class 'float'>
değerleri ise en az bir NaN
dönüştürmek nasıl docs bakınız: Gerek int Eğer örneğin bazı int
e NaN
yerine ihtiyaç değerleri
integer > cast to float64
ise fillna
tarafından 0
ve sonra mükemmel çalışıyor:
df['A'] = df['A'].str.extract('(\d+)', expand=False)
df['B'] = df['B'].str.extract('(\d+)', expand=False)
print (df)
A B
0 10 20
1 20 NaN
2 NaN 30
3 40 40
df1 = df.fillna(0).astype(int)
print (df1)
A B
0 10 20
1 20 0
2 0 30
3 40 40
print (df1.dtypes)
A int32
B int32
dtype: object
Öncelikle 'Eğer örnek dize ve bazıları için karışık dtypes sahip ikinci eğer, bu durumda int'' artığını olamaz böylece NaN' sadece şamandıra tarafından temsil edilebilir Başka bir şey daha sonra '' str.extract' kullanarak başarısız olur, ancak karışık dtypes desteklense de hatalara yol açtığı için iyi bir fikir değildir. Son dtype'ın ne olacağına karar vermeli ve size – EdChum