Вложенное структурированное массив в Pandas DataFrame с новыми именами столбцовPython

Программы на Python
Anonymous
 Вложенное структурированное массив в Pandas DataFrame с новыми именами столбцов

Сообщение Anonymous »

Как я могу преобразовать/взорвать вложенную структурированную массив Numpy в панд -фрейм, сохраняя при этом заголовки от вложенных массивов? Панды 1.3.4.
Пример структурированного массива : мне дают вложенную структурированную массив Numpy, которая выглядит так, и я просто восстанавливаю его здесь для MRE . < /p>

Код: Выделить всё

import numpy as np
import numpy.lib.recfunctions as rfn

arr1 = np.array([4, 5, 4, 5])
arr2 = np.array([0, 0, -1, -1])
arr3 = np.array([0.51, 0.89, 0.59, 0.94])
arr4 = np.array(
[[0.52, 0.80, 0.62, 1.1], [0.41, 0.71, 0.46, 0.77], [0.68, 1.12, 0.78, 1.19]]
).T
arr5 = np.repeat(np.array([0.6, 0.2, 0.2]), 4).reshape(3, 4).T
arrs = (arr1, arr2, arr3, arr4, arr5)

dtypes = [
("state", "f8"),
("variability", "f8"),
("target", "f8"),
("measured", [("mean", "f8"), ("low", "f8"), ("hi", "f8")]),
("var", [("mid", "f8"), ("low", "f8"), ("hi", "f8")]),
]

example = np.column_stack(arrs)
example = rfn.unstructured_to_structured(example, dtype=np.dtype(dtypes))
осмотреть пример массив

Код: Выделить всё

print(example)
print(example.dtype.names)
< /code>
[(4.,  0., 0.51, (0.52, 0.41, 0.68), (0.6, 0.2, 0.2))
(5.,  0., 0.89, (0.8 , 0.71, 1.12), (0.6, 0.2, 0.2))
(4., -1., 0.59, (0.62, 0.46, 0.78), (0.6, 0.2, 0.2))
(5., -1., 0.94, (1.1 , 0.77, 1.19), (0.6, 0.2, 0.2))]
('state', 'variability', 'target', 'measured', 'var')
< /code>
print(example["measured"].dtype.names)
< /code>
('mean', 'low', 'hi')

Код: Выделить всё

print(example["var"].dtype.names)
< /code>
('mid', 'low', 'hi')

желаемый Pandas DataFrame

< Таблица класс = "s-table">


atation < /th>
изменчивость < /th>
target < /th>
measured_mean < /th>
measured_low < /th>
measured_hi < /th>
< th> var_mid < /th>
var_low < /th>
var_hi < /th>
< /tr>
< /thead>


4 < /td>
0 < /td>
0.51
0.52 < /td>
0.41
0.68
0.6
< td> 0.2 < /td>
0.2
< /tr>

5 < /td>
0 < /td>
0.89
0.8
0.71
1.12
0.6
0.2
0.2


4 < /td>
-1 < /td>
0.59
0.62 < /td>
0.46
0.78
0.6
0.2 < /td>
0.2
< /tr>

5 < /td>
-1 < /td>
0.94
1.1
0.77
1.19
0.6
0.2
0.2




Попытки
test = pd.DataFrame(example)
print(test)
< /code>
state variability target measured var
0 4.0 0.0 0.51 (0.52, 0.41, 0.68) (0.6, 0.2, 0.2)
1 5.0 0.0 0.89 (0.8, 0.71, 1.12) (0.6, 0.2, 0.2)
2 4.0 -1.0 0.59 (0.62, 0.46, 0.78) (0.6, 0.2, 0.2)
3 5.0 -1.0 0.94 (1.1, 0.77, 1.19) (0.6, 0.2, 0.2)
< /code>
How to I unpack the measured and var columns to get/concatenate the column names, as shown above, based on the rec array?

Подробнее здесь: https://stackoverflow.com/questions/748 ... lumn-names

Вернуться в «Python»