Tôi có một khung dữ liệu trong đó một số ô chứa danh sách nhiều giá trị. Thay vì lưu trữ nhiều giá trị trong một ô, tôi muốn mở rộng khung dữ liệu để mỗi mục trong danh sách có hàng riêng (có cùng giá trị trong tất cả các cột khác). Vì vậy, nếu tôi có:
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
Làm cách nào để chuyển đổi thành dạng dài, ví dụ:
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.
Chỉ mục không quan trọng, bạn có thể đặt các cột hiện tại làm chỉ mục và thứ tự cuối cùng không quan trọng.
df.explode('samples')
để giải quyết điều này.explode
bây giờ chỉ có thể hỗ trợ phát nổ một cột.