Как преобразовать python фрейм данных так, чтобы уникальные значения строк транспонировались в столбцы, а значения другого столбца становились их строками - PullRequest
0 голосов
/ 05 апреля 2020

Резюме
Я использую Python 2.7. У меня есть фрейм данных со всеми категориальными переменными, т.е. тип данных является строкой. Я хотел бы преобразовать уникальные значения строки одного столбца в несколько столбцов. Кроме того, значения этих результирующих столбцов должны иметь соответствующие значения из другого столбца. Чтобы описать подробно, я предоставил воспроизводимый кадр данных и ожидаемый результат для вашей справки.

Кадр данных, который необходимо транспонировать, можно создать следующим образом:

import pandas as pd
codes = ['codeA','codeB', 'codeC']
variables = ['textA','textA','textB']
dataset = list(zip(codes,variables))
df = pd.DataFrame(data = dataset, columns=['codes','variables'])
df['string'] = 'string1'

Кадр данных, который необходимо транспонировать, выглядит следующим образом:

df
   codes variables   string
0  codeA     textA  string1
1  codeB     textA  string1
2  codeC     textB  string1

Ожидаемый конечный результат должен иметь вид это:

textA textB string
codeA       string1
codeB
      codeC string1

Примечание: цель - транспонирование. Меня не слишком беспокоит, являются ли пробелы пустыми значениями или нулями.

1 Ответ

0 голосов
/ 05 апреля 2020

Я не уверен насчет последнего столбца в вашем примере, так как он кажется несовместимым с остальной частью преобразования. В любом случае, я думаю, что преобразование столбца переменной с использованием функции pandas get_dummies, вероятно, является хорошим началом для начала.

import pandas as pd
codes = ['codeA','codeB', 'codeC']
variables = ['textA','textA','textB']
dataset = list(zip(codes,variables))
df = pd.DataFrame(data = dataset, columns=['codes','variables'])
df['string'] = 'string1'

df = pd.get_dummies(df, columns=['variables'])
df.variables_textA = df.codes.where(df.variables_textA.astype(bool),0)
df.variables_textB = df.codes.where(df.variables_textB.astype(bool),0)
columns = ['variables_textA', 'variables_textB','string']
df = df[columns]

Result

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...