Транспонирование нескольких столбцов с ключевым идентификатором с использованием панд - PullRequest
0 голосов
/ 28 ноября 2018

Мне нужно переместить несколько столбцов в один столбец, причем уже существующий столбец выступает в качестве идентификатора ключа.Я бы предпочел сделать это, используя панд, но обычный питон тоже подойдет.

Таблица под рукой выглядит следующим образом

ID    Col1    Col2    Col3
01     'a'     'b'    'c'
02     'a'     'b'    'c'
03     'a'     'b'    'c'

Желаемые результаты должны выглядеть следующим образом:

ID    Col1
01     'a'
01     'b'
01     'c'
02     'a'
02     'b'
02     'c'
03     'a'
03     'b'
03     'c'

Спасибо всем <3 </p>

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

Вы можете просто сложить фрейм данных и переименовать серию

df.set_index('ID').stack().reset_index(level=1,drop=True).rename('Col1').reset_index()

out:

    ID  Col1
0   1   'a'
1   1   'b'
2   1   'c'
3   2   'a'
4   2   'b'
5   2   'c'
6   3   'a'
7   3   'b'
8   3   'c'
0 голосов
/ 28 ноября 2018

melt + sort_values

Вот один из способов.Сортировка необходима только в том случае, если порядок строк важен.

res = pd.melt(df, id_vars='ID', value_name=df.columns[1])\
        .drop('variable', 1).sort_values('ID').reset_index(drop=True)

print(res)

   ID Col1
0   1  'a'
1   1  'b'
2   1  'c'
3   2  'a'
4   2  'b'
5   2  'c'
6   3  'a'
7   3  'b'
8   3  'c'
...