У меня есть 3D-кадр данных, и я хочу получить все значения одного индекса x, y по оси z, где ось z здесь перемещается между исходными 2D-кадрами. То, как я могу себе это представить, хотя простите меня, если я ошибаюсь, потому что это немного странно визуализировать, если бы я получил вектор x, y из x = 0, y = 0, это было бы [1, 5, 3].
Таким образом, мой результат будет кадром данных, где df_2d [0] [0] будет строкой "1, 5, 3" и т. Д., Принимая все значения в трехмерном кадре данных.
Есть ли способ, которым я могу достичь этого, не просматривая каждый индекс ячейки и не обращаясь к значениям явно?
Фрейм данных определяется как:
import pandas as pd
columns = ['A', 'B']
index = [1, 2, 3]
df_1 = pd.DataFrame(data=[[1, 2], [99, 57], [57, 20]], index=index, columns=columns)
df_2 = pd.DataFrame(data=[[5, 6], [78, 47], [21, 11]], index=index, columns=columns)
df_3 = pd.DataFrame(data=[[3, 4], [66, 37], [33, 17]], index=index, columns=columns)
df_3d = pd.concat([df_1, df_2, df_3], keys=['1', '2', '3'])
А затем, чтобы получить исходные данные, я делаю:
print(df_3d.xs('1'))
print(df_3d.xs('2'))
print(df_3d.xs('3'))
A B
1 1 2
2 99 57
3 57 20
A B
1 5 6
2 78 47
3 21 11
A B
1 3 4
2 66 37
3 33 17
Опять же, чтобы уточнить, если смотреть на этот отпечаток, я бы хотел, чтобы комбинированный кадр данных выглядел следующим образом:
A B
1 '1, 5, 3' '2, 6, 4'
2 '99, 78, 66' '57, 47, 37'
3 '57, 21, 33' '20, 11, 17'