如何通过循环转换DF中的值?

时间:2019-03-24 02:31:07

标签: python

我为字符串列设置了数据,我不得不将它们转换为int值,问题是某些列具有90多个不同的值并进行转换 手动并花费时间,是否有自动解决问题的功能?

我做到了,但是是手动完成的:

price_dict = {91:0, 65:1, 0:1, 20:1, 35:1, 32:1, 41:1, 36:1, 15:1, 90:1, 6:1, 67:1, 2:1, 57:1, 39:1, 1:1, 79:1, 34:1, 85:1} # not all

app[`Price`] = app[`Price`].apply(lambda a: price_dict[a]) # 0 = free, 1 = not free

app[`Price`].value_counts() # To check.

我尝试过:

 for x in app[`Price`]:

        if x == 1:
            price_dict = {91:0}
        else:
            price_dict = {x:1}

app[`Price`] = app[`Price`].apply(lambda a: price_dict[a])# 0 = free, 1 = not free

app[`Price`].value_counts() 

1 个答案:

答案 0 :(得分:0)

您可以使用map使用字典来定义定义的转换来转换列:

price_dict = {91:0, 65:1, 0:1, 20:1, 35:1, 32:1, 41:1, 36:1, 15:1, 90:1, 6:1, 67:1, 2:1, 57:1, 39:1, 1:1, 79:1, 34:1, 85:1} # not all

app['Price'] = app['Price'].map(price_dict)

app['Price'].value_counts()

您也可以像这样替换列中的值:

app['Price_new'] = 1

app.loc[app.Price == 91, 'Price_new'] = 0