Saya memiliki kerangka data tempat beberapa sel berisi daftar beberapa nilai. Daripada menyimpan beberapa nilai dalam sel, saya ingin memperluas kerangka data sehingga setiap item dalam daftar mendapatkan barisnya sendiri (dengan nilai yang sama di semua kolom lainnya). Jadi jika saya punya:
import pandas as pd
import numpy as np
df = pd.DataFrame(
{'trial_num': [1, 2, 3, 1, 2, 3],
'subject': [1, 1, 1, 2, 2, 2],
'samples': [list(np.random.randn(3).round(2)) for i in range(6)]
}
)
df
Out[10]:
samples subject trial_num
0 [0.57, -0.83, 1.44] 1 1
1 [-0.01, 1.13, 0.36] 1 2
2 [1.18, -1.46, -0.94] 1 3
3 [-0.08, -4.22, -2.05] 2 1
4 [0.72, 0.79, 0.53] 2 2
5 [0.4, -0.32, -0.13] 2 3
Bagaimana saya mengonversi ke bentuk panjang, misalnya:
subject trial_num sample sample_num
0 1 1 0.57 0
1 1 1 -0.83 1
2 1 1 1.44 2
3 1 2 -0.01 0
4 1 2 1.13 1
5 1 2 0.36 2
6 1 3 1.18 0
# etc.
Indeks tidak penting, tidak apa-apa untuk mengatur kolom yang ada sebagai indeks dan pemesanan akhir tidak penting.
df.explode('samples')untuk menyelesaikan ini.explodehanya dapat mendukung peledakan satu kolom untuk saat ini.