Элементы в столбцах рассматриваются как одна строка, а не как список элементов. Например, 'esportes\nrecreação infantil\ncontemplação'
- это только один элемент, а не список, состоящий из трех элементов.
Хотя невозможно применить .get_dummies()
непосредственно к такому случаю, относительно более простой способ решения этой проблемы - с одной строкой кода - это использовать pd.Series.str.get_dummies()
, как предложил ALollz.
# Create a dictionary
data = {'Atividades' : ['esportes\nrecreação infantil\ncontemplação',
'contemplação\nrecreação infantil\nesporte',
'contemplação\nrecreação infantil',
'contemplação\nrecreação infantil\neventos culturais'],
'Configuracao' : ['relevo plano\nriacho\nlagos\nbosque\nrede de lojas',
'beria-rio\nedificações\nesplandanadas\nrede de lojas',
'bosque\nrede decaminhos\nrecantos ',
'relevo predominantemente plano\nlago\nriacho'],
'Nome' : ['Parque Julien Rien', 'Parque da Residência',
'Feliz Lusitânia','Parque Barigüi']}
# Create a DataFrame
parques = pd.DataFrame.from_dict(data)
Обратите внимание, что есть два .get_dummies()
метода: один pandas.get_dummies
, который может быть применен к DataFrame, а другой pandas.Series.str.get_dummies
, который может быть применен только к Серии. Поэтому вам нужно применять функцию к каждому столбцу отдельно.
In []: parques['Atividades'].str.get_dummies(sep='\n')
Out[]:
contemplação esporte esportes eventos culturais recreação infantil
0 1 0 1 0 1
1 1 1 0 0 1
2 1 0 0 0 1
3 1 0 0 1 1
Если вы также хотите добавить префикс, вы можете использовать .add_prefix()
. ( префикс параметр pandas.get_dummies
нельзя использовать с pandas.Series.str.get_dummies
)
In []: parques['Atividades'].str.get_dummies(sep='\n').add_prefix("Atividades_")
Out[]:
Atividades_contemplação Atividades_esporte Atividades_esportes \
0 1 0 1
1 1 1 0
2 1 0 0
3 1 0 0
Atividades_eventos culturais Atividades_recreação infantil
0 0 1
1 0 1
2 0 1
3 1 1