如何使用PANDAS / Python将矩阵转换为列数组

时间:2017-01-04 22:28:04

标签: python arrays pandas matrix dataframe

我需要将matriz(下面)转换为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函数,但我无法获得所需的结果。

2 个答案:

答案 0 :(得分:5)

您可以使用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

答案 1 :(得分:0)

我在考虑使用pd.melt()

docker ps

它不会完全给你你想要的东西,但它可能是很好的知道:

pd.melt(df.reset_index(), id_vars=['index'], value_vars=['A', 'B', 'C'], var_name='Target', value_name='Weight')