gpt4 book ai didi

python - 在python中从表转换为矩阵

转载 作者:太空宇宙 更新时间:2023-11-03 14:22:03 31 4
gpt4 key购买 nike

我有以下 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

我想将它转换成一个二维矩阵,输出到一个 csv,这样它看起来像:

   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

关于python - 在python中从表转换为矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26578769/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com