嗨,我已经生成了一个数据框,如下所示:
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
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
使用来自“数据”字段中的键,创建字典或列表推导,并使用“ 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