如何使用 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?

在 python pandas 中构造一个共现矩阵

python中怎样将列表转成矩阵

加载一个非常大的 txt 文件并进行转置

Python使用pandas的crosstab函数计算混淆矩阵并使用Seaborn可视化混淆矩阵实战

Python代码阅读(第41篇):矩阵转置