Попробуйте с pd.get_dummies()
>> df = pd.read_csv(<path_to_file>, sep=',', encoding='utf-8', header=0)
>> df
Id Category
0 1 A
1 2 B
2 3 C
3 4 B
4 5 C
5 6 d
>> pd.get_dummies(df.Category)
Это будет кодировать Category
и дать вам новые столбцы :
A B C d
Но не будет «исправлять» d -> D и не даст вам никаких столбцов, которые не могут быть выведены из значений, которые у вас есть в Category
.
Предлагаю вам проверить решение, опубликованное в комментарии ранее для этого.
РЕДАКТИРОВАТЬ
# Load data from .CSV with pd.read_csv() as demonstrated above
In [13]: df
Out[13]:
Category Id
0 A 1
1 B 2
2 C 3
3 B 4
4 C 5
5 D 6
## One-liner for hot-encoding, then concatenating to original dataframe
## and finally dropping the old column 'Category', you can skip the
## last part if you want to keep original column as well.
In [14]: df = pd.concat([df, pd.get_dummies(df.Category)], axis=1).drop('Category', axis=1)
In [15]: df
Out[15]:
Id A B C D
0 1 1.0 0.0 0.0 0.0
1 2 0.0 1.0 0.0 0.0
2 3 0.0 0.0 1.0 0.0
3 4 0.0 1.0 0.0 0.0
4 5 0.0 0.0 1.0 0.0
5 6 0.0 0.0 0.0 1.0
## Write to file
In [16]: df.to_csv(<output_path>, sep='\t', encoding='utf-8', index=None)
Как вы можете видеть это не транспозиции, только результат добавляется к каждой строке горячего кодирования Category
столбца.
Независимо от того, принимает ли Excel окончательные данные или нет, вы не можете сделать с Пандами об этом, к сожалению.
Надеюсь, это поможет.
Возможные дубликатом [Фиктивные переменные, когда не все категории присутствуют ] (http://stackoverflow.com/questions/37425961/dummy-variables-when-not-all-categories-are-present) – ayhan
Он называется одним горячим кодированием, и вы можете сделать это с помощью функции sklearn OneHotEncoder() – mitsi
@ayhan Это аналогичный вопрос, но как передать файл CSV, где присутствуют мои данные, а не напрямую передавать данные? Спасибо –