【发布时间】:2019-09-02 01:36:14
【问题描述】:
我有一个 3D 数据帧,我想获取一个 x,y 索引的所有值跨 z 轴,这里的 z 轴在原始 2D 数据帧之间移动。我能够想象它的方式虽然如果我弄错了请原谅我,因为它有点奇怪,如果我得到 x=0, y=0 的 x,y 的向量,它将是 [1, 5, 3]。
所以我的结果将是一个数据帧,其中 df_2d[0][0] 将是一个字符串“1, 5, 3”,依此类推,取 3D 数据帧中的所有值。
有没有什么方法可以在不循环遍历每个单元格索引并显式访问值的情况下实现这一点?
数据框定义为:
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'
【问题讨论】:
-
嘿。只是想了解您要访问哪些单元格。 df_3d.xs('1') df_3d.xs('2') df_3d.xs('3') ??
-
请查看带有输出样本的更新问题。
标签: python pandas dataframe multidimensional-array