熊猫将多个列重新格式化为一个。

时间:2015-04-29 08:57:06

标签: python pandas

我有一些代码可以生成依赖项的pandas数据框:

Input | Output | Script

我试图从这个矩阵中生成一个不同值列表,作为一个只有一列的新表。

nodes

我试过

Nodes_List = pd.DataFrame({nodes: [dependency['Input'].values,
                                   dependency['Output'].values,
                                   dependency['Script'].values]})

但是我没有将所有三列合并,而是获得一个三行数据帧,其值为逗号分隔值?如何将三列相互叠加,然后优雅地获得不同的值?

由于

1 个答案:

答案 0 :(得分:1)

说你的数据框就像

In [295]: df
Out[295]: 
  Input Output Script
0   aaa    bbb    ggg
1   ddd    hhh    ccc
2   eee    bbb    fff
3   aaa    bbb    kkk

您可以使用ravel()展平它,然后取unique个值

In [296]: np.unique(df.values.ravel())
Out[296]: array(['aaa', 'bbb', 'ccc', 'ddd', 'eee', 'fff', 'ggg', 'hhh', 'kkk'], dtype=object)

直接在np.unique()上使用df也会提供相同的输出

In [301]: np.unique(df)
Out[301]: array(['aaa', 'bbb', 'ccc', 'ddd', 'eee', 'fff', 'ggg', 'hhh', 'kkk'], dtype=object)

并且,可以使用

创建Nodes_List
In [297]: pd.DataFrame({'nodes': np.unique(df)})
Out[297]:
  nodes
0   aaa
1   bbb
2   ccc
3   ddd
4   eee
5   fff
6   ggg
7   hhh
8   kkk