如何在数据框中生成矩阵元素的数据集?

时间:2019-02-02 01:37:39

标签: python arrays dataframe matrix dataset

我在'A'文件中有3个参数'B''C'.TXT的数据集,在以24x20矩阵打印它们后,我需要收集{的第一个元素{1}},'A''B'在熊猫'C'中放入长数组,然后依次排列每个元素的第二个元素,然后依次排列第三个元素,依此类推,直到第480个元素。

所以我的数据在文本文件中是这样的: 我的数据是txt文件,如下:

dataframe

我已经制作了一个熊猫id_set: 000 A: -2.46882615679 B: -2.26408246559 C: -325.004619528 ,其中包括3列dataframe'A''B''C',并定义了以正确方式打印24x20矩阵的函数。通过2x2矩阵的简单示例:

index

重塑为这种形式:

1st cycle:  A = [1,2,    B = [4,5,     C = [8,9,
                 3,4]         6,7]          10,11]
2nd cycle:  A = [0,8,    B = [1,9,     C = [10,1,
                 2,5]         4,8]          2,7]

我的脚本如下:

          A(1,1),B(1,1),C(1,1),A(1,2),B(1,2),C(1,2),.....
Result=  [1,4,8,2,5,9,3,6,10,4,7,11] #1st cycle
         [0,1,10,8,9,1,2,4,2,5,8,7]  #2nd cycle

注意2::我在文本文件中提供了3个周期的数据集: Text dataset

1 个答案:

答案 0 :(得分:1)

我不确定我是否完全理解您的问题,但这是一个解决方案:

使用as_matrix()将数据帧转换为2d numpy数组,然后使用ravel()获得大小为480 * 3的向量,然后在循环中循环,并使用vstack方法在结果中彼此堆叠行是包含示例数据的代码:

A = [[1,2,3,4], [10,20,30,40]]
B = [[4,5,6,7], [40,50,60,70]]
C = [[8,9,10,11], [80,90,100,110]]

cycles = 2

for cycle in range(cycles):
    data = {'A': A[cycle], 'B': B[cycle], 'C': C[cycle]}
    df = pd.DataFrame(data)
    D = df.as_matrix().ravel()
    if cycle == 0:
        Results = np.array(D)
    else:
        Results = np.vstack((Results, D2))
# Output: Results= array([[  1,   4,   8,   2,   5,   9,   3,   6,  10,   4,   7,  11], [ 10,  40,  80,  20,  50,  90,  30,  60, 100,  40,  70, 110]], dtype=int64)
np.savetxt("Results.csv", Results, delimiter=",")

这是您想要的吗?