ฉันมีไฟล์ข้อมูลที่บางเซลล์มีรายการค่าหลายค่า แทนที่จะเก็บค่าหลายค่าในเซลล์ฉันต้องการขยายดาต้าเฟรมเพื่อให้แต่ละไอเท็มในรายการได้รับแถวของตัวเอง (ด้วยค่าเดียวกันในคอลัมน์อื่นทั้งหมด) ดังนั้นถ้าฉันมี:
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
ฉันจะแปลงเป็นรูปแบบยาวได้อย่างไร:
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.
ดัชนีไม่สำคัญคุณสามารถตั้งค่าคอลัมน์ที่มีอยู่เป็นดัชนีและลำดับสุดท้ายไม่สำคัญ
df.explode('samples')
เพื่อแก้ปัญหานี้ได้explode
สามารถรองรับการขยายได้เพียงหนึ่งคอลัมน์เท่านั้นในตอนนี้