2015-10-01 4 views
1

У меня есть столбец данных pandas, заполненный кодами стран для 100 стран. Я хочу использовать их для регрессии, но я хочу только создавать фиктивные переменные для определенных стран в моем наборе данных.Как создать фиктивные переменные только для определенных значений в столбце?

Я думал, что это будет работать:

dummies = pd.get_dummies(df.CountryCode, prefix='cc_') 
df_and_dummies = pd.concat([df,dummies[dummies['cc_US', 'cc_GB']]], axis=1) 
df_and_dummies 

Но это дает мне ошибку:

KeyError: ('cc_US', 'cc_GB')

Мой dataframe в настоящее время выглядит примерно так:

dframe = pd.DataFrame({'A': ['a', 'b', 'a'], 'B': ['b', 'a', 'c'], 
       'CountryCode': ['UK', 'US', 'RU']}) 
dframe 

no dummies

Но я хочу, чтобы выглядеть следующим образом:

with dummy variables

Есть простой способ определить, какие значения вы хотите включить в методе get_dummies, или есть другой способ определить конкретные фиктивные переменные?

+0

Вы хотите 'чайников [dummies.isin ([ 'cc_US', 'cc_GB', 'cc_DE'])]'? В противном случае вы можете привести воспроизводимый пример? – joris

+0

@joris Это не похоже на трюк. Я добавил пример сообщения. Спасибо за ваше внимание! – samthebrand

ответ

1

Манекены выглядит так:

In [25]: dummies 
Out[25]: 
    cc_RU cc_UK cc_US 
0  0  1  0 
1  0  0  1 
2  1  0  0 

Чтобы выбрать определенные столбцы этого, вы можете предоставить список имен столбцов в GetItem []:

In [27]: dummies[['cc_US', 'cc_UK']] 
Out[27]: 
    cc_US cc_UK 
0  0  1 
1  1  0 
2  0  0 

Так что вы на самом деле пропустил просто [скобка.
Полный код становится затем:

In [29]: pd.concat([df, dummies[['cc_US', 'cc_UK']]], axis=1) 
Out[29]: 
    A B CountryCode cc_US cc_UK 
0 a b   UK  0  1 
1 b a   US  1  0 
2 a c   RU  0  0 
+0

Строка 27 выше возвращает: 'KeyError:" ['cc_US' 'cc_UK'] не в индексе "' для меня. Хммм. – samthebrand

+0

Вы проверили, что вы использовали правильные имена столбцов? (например, не с двойным подчеркиванием? как 'dummies = pd.get_dummies (dframe.CountryCode, prefix = 'cc')' с вашим примером фрейм-данных сверху (префикс без подчеркивания, который автоматически добавляется)). – joris

+0

, что лишнее подчеркивание было проблемой! Я не знал, что «префикс» автоматически добавляет. Большое спасибо за помощь. – samthebrand

Смежные вопросы