Как повернуть столбец фрейма данных pandas для создания двоичной «таблицы значений»?

#python #pandas #dataframe #binary #categorical-data

#python #pandas #фрейм данных #двоичный #категориальный-данные

Вопрос:

У меня есть следующий фрейм данных pandas:

 import pandas as pd
df = pd.read_csv("filename.csv")

df 
     A   B         C         D        E    
0    a  0.469112 -0.282863 -1.509059  cat  
1    c -1.135632  1.212112 -0.173215  dog   
2    e  0.119209 -1.044236 -0.861849  dog   
3    f -2.104569 -0.494929  1.071804  bird   
4    g -2.224569 -0.724929  2.234213  elephant
...
  

Я хотел бы создать больше столбцов на основе идентификаторов категориальных значений column E таким образом, чтобы фрейм данных выглядел следующим образом:

  df 
         A   B         C         D        cat    dog     bird    elephant ....    
    0    a  0.469112 -0.282863 -1.509059  -1      0       0       0
    1    c -1.135632  1.212112 -0.173215   0     -1       0       0
    2    e  0.119209 -1.044236 -0.861849   0     -1       0       0
    3    f -2.104569 -0.494929  1.071804   0      0      -1       0
    4    g -2.224569 -0.724929  2.234213   0      0       0       0
    ...
  

То есть я перевожу значения для столбца E в двоичную матрицу на основе значений E , указывая 1 , существует ли значение, и 0 для всех остальных, где его нет (здесь я бы хотел, чтобы это было -1 или «отрицательная двоичная матрица»)?

Я не уверен, какая функция в pandas лучше всего это делает: может pandas.DataFrame.unstack() быть?

Любая информация приветствуется!

Ответ №1:

используйте pd.concat , drop , и get_dummies

 pd.concat([df.drop('E', 1), pd.get_dummies(df.E).mul(-1)], axis=1)
  

введите описание изображения здесь

Комментарии:

1. Очень быстро и практично!