Acoplar varias columnas en un marco de datos a una sola columna
Tengo un marco de datos como este:
id other_id_1 other_id_2 other_id_3
1 100 101 102
2 200 201 202
3 300 301 302
Quiero esto:
id other_id
1 100
1 101
1 102
2 200
2 201
2 202
3 300
3 301
3 302
Puedo obtener mi salida deseada fácilmente así:
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)
Lo que me da esto:
{1: [100, 101, 102], 2: [200, 201, 202], 3: [300, 301, 302]}
Puedo escribir eso fácilmente en un archivo. Sin embargo, estoy luchando para hacer esto en los pandas nativos. Me imagino que esta aparente transposición sería más sencilla, pero estoy luchando ...