如何使用 PANDAS / Python 将矩阵转换为列数组
Posted
技术标签:
【中文标题】如何使用 PANDAS / Python 将矩阵转换为列数组【英文标题】:How to convert a matrix into column array with PANDAS / Python 【发布时间】:2017-05-19 08:40:56 【问题描述】:我需要将矩阵(如下)转换为 3 列列表。
我目前有一个这样的 DataFrame:
A B C ...
a 1 3 4 ...
b 4 0 6 ...
c 9 8 0 ...
我需要得到这样的结果:
Source Target Weight
a A 1
a B 3
a C 4
b A 4
b C 6
c A 9
c B 8
我一直在尝试使用 pandas.pivot_table 函数,但无法获得所需的结果。
【问题讨论】:
【参考方案1】:你可以使用DataFrame.stack()方法:
In [335]: df.stack().reset_index().rename(columns='level_0':'Source','level_1':'Target', 0:'Weight')
Out[335]:
Source Target Weight
0 a A 1
1 a B 3
2 a C 4
3 b A 4
4 b B 0
5 b C 6
6 c A 9
7 c B 8
8 c C 0
【讨论】:
【参考方案2】:我正在考虑使用pd.melt():
pd.melt(df.reset_index(), id_vars=['index'], value_vars=['A', 'B', 'C'], var_name='Target', value_name='Weight')
它不会为您提供您想要的确切信息,但最好知道:
index Target Weight
0 a A 1.0
1 b A 4.0
2 c A 9.0
3 a B 3.0
4 b B 0.0
5 c B 8.0
...
【讨论】:
以上是关于如何使用 PANDAS / Python 将矩阵转换为列数组的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 python 和 pandas 将 Csv 文件转换为 libsvm?