Как повернуть уникальные значения строки и отметить ее появление? - PullRequest
1 голос
/ 12 июля 2019

Я ищу решение для случая ниже:

  1. Как мне повернуть df так, чтобы значения col стали столбцами, если df состоит только из одного измерения?

  2. А как поступить, чтобы в каждом столбце, состоящем из этих строк, имелось значение 0 или 1 в зависимости от вхождений для каждого из них в предыдущем столбце?

Будет проще проиллюстрировать это. Итак, из этого типа фрейма данных:

df =

DATA   
cat1
dog1
cat2
dog2
cat3
dog3
...   

к этому виду фрейма данных:

df =

Animal   cat1   dog1   cat2   dog2   cat3   dog3    ...
cat1    1      0      0      0      0      0        ...
dog1    0      1      0      0      0      0        ...
cat2    0      0      1      0      0      0        ...
dog2    0      0      0      1      0      0        ...
cat3    0      0      0      0      1      0        ...
dog3    0      0      0      0      0      1        ...
...   
cat1    1      0      0      0      0      0        ...
dog1    0      1      0      0      0      0        ...

Сначала я попытался собрать все уникальные значения, а затем изменил его до pd.DataFrame, потому что это был массив np. Тогда я попытался использовать пивот. Я знаю, что он должен иметь такие аргументы, как «индекс», «столбец» и «значения», но в моем случае у меня есть только одно измерение (только один столбец).

to_reschape = df.Animal.unique()
type(to_reschape)
dataset = pd.DataFrame(to_reschape)
dataset.pivot()

KeyError: None

1 Ответ

1 голос
/ 12 июля 2019

Вы можете использовать эту команду:

где дф,

   DATA
0  cat1
1  dog1
2  cat2
3  dog2
4  cat3
5  dog3
6  dog1

Используйте

pd.get_dummies(df.set_index(df.DATA), prefix='', prefix_sep='')

Выход:

      cat1  cat2  cat3  dog1  dog2  dog3
DATA                                    
cat1     1     0     0     0     0     0
dog1     0     0     0     1     0     0
cat2     0     1     0     0     0     0
dog2     0     0     0     0     1     0
cat3     0     0     1     0     0     0
dog3     0     0     0     0     0     1
dog1     0     0     0     1     0     0
...