开发者社区 问答 正文

如何将Pandas DataFrame的每一行转换为新的nxm矩阵?

嗨,我已经生成了一个数据框,如下所示:

Data     mS1  nS1   mS1S2   nS1S2
KC        1    9     1       18
KN        1    9     0       19
KD        1    9     1       18
NG        0    10    2       17

现在,我想将每一行转换为一个新的2x2矩阵:第一和第三,第二和第四列

例如对于KC:

 KC  1  1
-KC  9  18

问题来源:stackoverflow

展开
收起
is大龙 2020-03-23 21:40:36 561 分享 版权
1 条回答
写回答
取消 提交回答
  • 使用来自“数据”字段中的键,创建字典或列表推导,并使用“ numpy.ndarray.reshape”。看起来也有必要使用order ='F'获得所需的输出:

    d = {i: pd.DataFrame(r.to_numpy().reshape(2, 2, order='F'),
                         index=[f'{i}', f'-{i}'],
                         columns=['A', 'B'])
         for i, r in df.set_index('Data').iterrows()}
    
    print(d['KC'])
    

    [出]

         A   B
    KC   1   1
    -KC  9  18
    

    *

    l = [pd.DataFrame(r.to_numpy().reshape(2, 2, order='F'), index=[f'{i}', f'-{i}'], columns=['A', 'B']) for i, r in df.set_index('Data').iterrows()]

    for d in l: print(d)

    [出]

         A   B
    KC   1   1
    -KC  9  18
    
         A   B
    KN   1   0
    -KN  9  19
    
         A   B
    KD   1   1
    -KD  9  18
    
          A   B
    NG    0   2
    -NG  10  17
    

    回答来源:stackoverflow

    2020-03-23 21:40:45
    赞同 展开评论
问答分类:
问答标签:
问答地址: