Achatar várias colunas em um quadro de dados em uma única coluna
Eu tenho um quadro de dados como este:
id other_id_1 other_id_2 other_id_3
1 100 101 102
2 200 201 202
3 300 301 302
Eu quero isso:
id other_id
1 100
1 101
1 102
2 200
2 201
2 202
3 300
3 301
3 302
Posso obter facilmente a saída desejada assim:
to_keep = {}
for idx in df.index:
identifier = df.loc[idx]['id']
to_keep[identifier] = []
for col in ['other_id_1', 'other_id_2', 'other_id_3']:
row_val = df.loc[idx][col]
to_keep[identifier].append(row_val)
O que me dá isso:
{1: [100, 101, 102], 2: [200, 201, 202], 3: [300, 301, 302]}
Eu posso escrever isso facilmente em um arquivo. No entanto, estou lutando para fazer isso em pandas nativos. Imagino que essa aparente transposição seria mais direta, mas estou lutando ...