#python #pandas
#pandas
Вопрос:
Взят набор данных, подобный следующему (вывод из df.head()
)
individual states
1 Alaska, Hawaii
2 Hawaii, Alaska
3 Kansas, Iowa, Maryland
4 New Jersey, Newada
5 Newada, New Jersey
Если я запущу
df['states'].str.get_dummies(sep=',')
Я получаю следующее
Hawaii Iowa Maryland New Jersey Newada Alaska Hawaii Kansas New Jersey Newada
0 1 0 0 0 0 1 0 0 0 0
1 0 0 0 0 0 1 1 0 0 0
2 0 1 1 0 0 0 0 1 0 0
3 0 0 0 0 1 0 0 0 1 0
4 0 0 0 1 0 0 0 0 0 1
Обратите внимание на повторяющиеся (повторяющиеся) столбцы. Значения различаются для нескольких вхождений столбцов, поэтому я не могу просто отбросить их. Откуда берется проблема, как мне сделать это правильно? Заранее спасибо!
Ответ №1:
Проблема в разделителе, нужно ', '
, иначе получите имена некоторых столбцов с пробелами, которые отличаются от без, поэтому создаются новые столбцы:
df1 = df['states'].str.get_dummies(sep=',')
print (df1.columns)
Index([' Alaska', ' Hawaii', ' Iowa', ' Maryland', ' New Jersey', ' Newada',
'Alaska', 'Hawaii', 'Kansas', 'New Jersey', 'Newada'],
dtype='object')
print (df1)
Alaska Hawaii Iowa Maryland New Jersey Newada Alaska Hawaii
0 0 1 0 0 0 0 1 0
1 1 0 0 0 0 0 0 1
2 0 0 1 1 0 0 0 0
3 0 0 0 0 0 1 0 0
4 0 0 0 0 1 0 0 0
Kansas New Jersey Newada
0 0 0 0
1 0 0 0
2 1 0 0
3 0 1 0
4 0 0 1
df2 = df['states'].str.get_dummies(sep=', ')
print (df2)
Alaska Hawaii Iowa Kansas Maryland New Jersey Newada
0 1 1 0 0 0 0 0
1 1 1 0 0 0 0 0
2 0 0 1 1 1 0 0
3 0 0 0 0 0 1 1
4 0 0 0 0 0 1 1
Комментарии:
1. Вот и все, спасибо! Однако я использовал .str.replace(» «,»»), чтобы удалить пробелы вместо того, чтобы помещать пробелы в разделитель