Python 转换数据文件';X'';Y'';Z'';数据';格式

Python 转换数据文件';X'';Y'';Z'';数据';格式,python,numpy,pandas,Python,Numpy,Pandas,我有3个数据集, 第一个名为Data的文件保存了我的数据;该表有5列,3行-每列表示一个特定位置,可以用一组X、Y位置标识,每行表示一个特定深度(Z); 第二个数据集保存5个X,Y位置(第一个数据集的列),而第三个文件保存3个Z值(数据表的行) 生成我的数据 现在,我想合并所有元素,并拥有一个新的X、Y、Z数据格式的numpy数组(或熊猫数据帧) 例如,对于给定的数据,表的前3行应为: X Y Z Data #this is a header, I just add it to make re

我有3个数据集, 第一个名为Data的文件保存了我的数据;该表有5列,3行-每列表示一个特定位置,可以用一组X、Y位置标识,每行表示一个特定深度(Z); 第二个数据集保存5个X,Y位置(第一个数据集的列),而第三个文件保存3个Z值(数据表的行)

生成我的数据 现在,我想合并所有元素,并拥有一个新的X、Y、Z数据格式的numpy数组(或熊猫数据帧) 例如,对于给定的数据,表的前3行应为:

X Y  Z Data #this is a header, I just add it to make reading easier
0 0  -1   1
0 0  -5   6
0 0 -10  11
0 1  -1   2
0 1  -5   7
0 1 -10  12
等等

任何关于如何做到这一点的提示都会很好
我正在考虑使用pandas来创建适当的(多)索引列,但我没有找到正确的方法来这样做

从X和Y构建多索引,并使用unstack

In [4]: columns = pd.MultiIndex.from_arrays([X, Y])

In [5]: df = DataFrame(Data, columns=columns, index=Z)

In [6]: df
Out[6]: 
      0       1       2
      0   1   0   1   0
-1    1   2   3   4   5
-5    6   7   8   9  10
-10  11  12  13  14  15

In [7]: df1 = df.unstack().reset_index()

In [8]: df1.columns = ['X', 'Y', 'Z', 'Data']

In [9]: df1
Out[9]: 
    X  Y   Z  Data
0   0  0  -1     1
1   0  0  -5     6
2   0  0 -10    11
3   0  1  -1     2
4   0  1  -5     7
5   0  1 -10    12
6   1  0  -1     3
7   1  0  -5     8
8   1  0 -10    13
9   1  1  -1     4
10  1  1  -5     9
11  1  1 -10    14
12  2  0  -1     5
13  2  0  -5    10
14  2  0 -10    15

我选择了适当的X、Y和Z列(
reset_index()
),而不是将它们作为三级多索引。一般来说,这更干净、更有用。

你的
Z
列表的条目数少于
X
Y
,对吗?@SaulloCastro是的,这是正确的-数据中的列数与X的数量相同,Y-数据中的行数是Z的数量为什么投票关闭这一个?太好了!这正是我所需要的,而且比我想做的要干净得多!谢谢
In [4]: columns = pd.MultiIndex.from_arrays([X, Y])

In [5]: df = DataFrame(Data, columns=columns, index=Z)

In [6]: df
Out[6]: 
      0       1       2
      0   1   0   1   0
-1    1   2   3   4   5
-5    6   7   8   9  10
-10  11  12  13  14  15

In [7]: df1 = df.unstack().reset_index()

In [8]: df1.columns = ['X', 'Y', 'Z', 'Data']

In [9]: df1
Out[9]: 
    X  Y   Z  Data
0   0  0  -1     1
1   0  0  -5     6
2   0  0 -10    11
3   0  1  -1     2
4   0  1  -5     7
5   0  1 -10    12
6   1  0  -1     3
7   1  0  -5     8
8   1  0 -10    13
9   1  1  -1     4
10  1  1  -5     9
11  1  1 -10    14
12  2  0  -1     5
13  2  0  -5    10
14  2  0 -10    15