如何在不获取NaN值的情况下将字符串列转换为数值

时间:2019-04-05 19:22:25

标签: python pandas

enter image description here

我有几列字符串,我必须将其转换为值。我用了这段代码 不幸的是,fillna方法在此示例中不起作用。

如何解决此问题?

这是head()

Head()

data['country_txt'] = data['country_txt'].astype('float64') 
data['city'] = data['city'].astype('float64') 

我期望结果正常,但实际输出全部充满了NaN值:

country_txt 0非空float64 城市0非空float64

1 个答案:

答案 0 :(得分:0)

显然,您需要将字符串映射到integer表示形式。

有很多不同的方法来实现这一目标。

1 pd.factorize

df['country_as_int'] = pd.factorize(df['country_txt'])[0]

2 LabelEncoder

from sklearn.preprocessing import LabelEncoder
f = LabelEncoder()
df['country_as_int'] = f.fit_transform(df['country_txt'])

3 np.unique

df['country_as_int'] = np.unique(df['country_txt'], return_inverse=True)[-1]