我有pandas数据框(df)形式的以下数据:
每个列名称都有以“_”分隔的起始和结束节点.即,’A_B’表示A的起始节点和B的结束节点
A_A A_B A_C B_B B_A B_C C_C C_A C_B
12 23 33 43 19 98 44 77 35
A B C
A 12 23 33
B 19 43 98
C 77 35 44
要做到这一点,假设我们有
from itertools import groupby, combinations_with_replacement
col_names = ['A','B','C']
for i in combinations_with_replacement(col_names, 2):
get_val = df[i[0]+'_'+i[1]]
在pandas中有一种方法可以将其输出为矩阵并打印出行和列名称吗?
解决方法:
我不确定这是否尽可能优雅地完成,但是:
df = pd.read_clipboard()
df
Out[3]:
A_A A_B A_C B_B B_A B_C C_C C_A C_B
0 12 23 33 43 19 98 44 77 35
dfT = df.transpose().reset_index()
dfT
Out[8]:
index 0
0 A_A 12
1 A_B 23
2 A_C 33
3 B_B 43
4 B_A 19
5 B_C 98
6 C_C 44
7 C_A 77
8 C_B 35
dfT['col_name'] = dfT['index'].str.split('_').map(lambda x: x[1])
dfT['row_name'] = dfT['index'].str.split('_').map(lambda x: x[0])
dfT.pivot(index='row_name', columns='col_name', values=0)
Out[17]:
col_name A B C
row_name
A 12 23 33
B 19 43 98
C 77 35 44
final_mat = dfT.pivot(index='row_name', columns='col_name', values=0)
final_mat
Out[19]:
col_name A B C
row_name
A 12 23 33
B 19 43 98
C 77 35 44
final_mat.index.name = None
final_mat.columns.name = None
final_mat
Out[22]:
A B C
A 12 23 33
B 19 43 98
C 77 35 44
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。