Как изменить значения категориальных столбцов? - PullRequest
0 голосов
/ 29 сентября 2019

В моем фрейме данных у меня есть столбец «страны», я пытаюсь изменить значения этого столбца на «развитые страны» и «развивающиеся страны». Мой фрейм данных выглядит следующим образом:

   countries age gender
1  India     21  Male
2  China     22  Female
3  USA       23  Male
4  UK        25  Male

У меня есть два следующих массива:

developed = ['USA','UK']
developing = ['India', 'China']

Я хочу преобразовать массив в следующий фрейм данных:

   countries    age gender
1  developing   21  Male
2  developing   22  Female
3  developed    23  Male
4  developed    25  Male

Я попытался следующий код, но я получил ошибку «SettingWithCopyWarning»:

df[df['countries'].isin(developed)]['countries'] = 'developed'

Я попробовал следующий код, но я получил ошибку «SettingWithCopyWarning», и мой блокнот jupyter завис:

for i, x in enumerate(df['countries']):
    if x in developed:
        df['countries'][i] = 'developed'

Есть ли альтернативный способ изменить категории столбцов ??

Ответы [ 2 ]

2 голосов
/ 29 сентября 2019

использовать np.where :

import numpy as np 
df['countries']=np.where(df['countries'].isin(developed),'developed','developing')
print(df)

    countries  age  gender
1  developing   21    Male
2  developing   22  Female
3   developed   23    Male
4   developed   25    Male

Также вы можете использовать DataFrame.loc :

c=df['countries'].isin(developed)
df.loc[c,'countries']='developed'
df.loc[~c,'countries']='developing'
print(df)


   countries  age  gender
1  developing   21    Male
2  developing   22  Female
3   developed   23    Male
4   developed   25    Male
0 голосов
/ 01 октября 2019

Вы можете попробовать реализовать функцию замены, она не выдаст ошибку.

Updated_DataSet1 = data_set.replace("India", "Developing")
Updated_DataSet2 = Updated_DataSet1.replace("China","Developing")
...