将多索引数据帧转换为数组

时间:2019-10-10 19:49:08

标签: python arrays dataframe

我有一个如下所示的多索引数据框:

enter image description here

这不是真正的多级索引,因为True和False是第一行/第一列的属性。因此,真正的唯一索引只会是第一行和第一列

我想从该数据帧中生成一个数组,在该数组中我实际上是“评估”对/错信息,并将其放入所有行/标题和数据单元格中:

预期输出是每个单元格的元组,具有:  -第一个要素是价值  -第二个元素是行和真/假值的串联

第二行/列不会被导出,因为该信息已经注入到其他单元格中。因此,我将得到一个4 x 4数组,如下所示: enter image description here

我上面的数据框的示例代码:

import pandas as pd
import numpy as np

columns = [['E1001', 'E1002', 'E1000'],
        ['False', 'False', 'True']] c_tuples = list(zip(*columns)) multi_columns = pd.MultiIndex.from_tuples(c_tuples)

index = [['10000', '20000', '21000','22000'],
            ['True', 'True', 'False', 'False']]

i_tuples = list(zip(*index)) multi_index = pd.MultiIndex.from_tuples(i_tuples)

df = pd.DataFrame(np.ones((4, 3)).reshape((len(multi_index),len(multi_columns))), 
             index=multi_index,
             columns=multi_columns)

和预期的输出对象:

output = []
output.append(['(,)','(\'E1001\',\'COL_FALSE\')','(E1002,COL_FALSE\')','(E1000,\'COL_TRUE\')'])
output.append(['(\'10000\', \'ROW_TRUE\')','(1,\'ROW_TRUE COL_FALSE\')','(1,\'ROW_TRUE COL_FALSE\')','(1,\'ROW_TRUE COL_TRUE\')'])  
output.append(['(\'2000\', \'ROW_TRUE\')','(1,\'ROW_TRUE COL_FALSE\')','(1,\'ROW_TRUE COL_FALSE\')','(1,\'ROW_TRUE COL_TRUE\')'])   
output.append(['(\'21000\', \'ROW_FALSE\')','(1,\'ROW_FALSE COL_FALSE\')','(1,\'ROW_FALSE COL_FALSE\')','(1,\'ROW_FALSE COL_TRUE\')'])
output.append(['(\'22000\', \'ROW_FALSE\')','(1,\'ROW_FALSE COL_FALSE\')','(1,\'ROW_FALSE COL_FALSE\')','(1\',ROW_FALSE COL_TRUE\')'])  
for row in output:
    print("{: <25} {: <25} {: <25} {: <25}".format(*row))

我现实生活中的案例将有更多的行/列,并且我要添加一个具有多个属性的对象(这样就不会像她那样的元组)

我的基本问题是,我无法找到一个好的方法,就是在不访问每个数据单元格然后再查找index / column属性的情况下生成此表,但这似乎一点都不起作用,我正在寻找更智能的表/更有效的方式来处理此问题

0 个答案:

没有答案