pandas如何将二维数据帧转换为一维数据帧

时间:2018-06-07 08:38:37

标签: python-3.x pandas

假设我有一个包含多列的数据框。

    a   b   c
1           
2           
3   

如何将其转换为单列数据框

1   a
2   a
3   a
1   b
2   b
3   b
1   c
2   c
3   c

请注意,前者是Panel以外的Dataframe

2 个答案:

答案 0 :(得分:6)

使用melt

df = df.reset_index().melt('index', var_name='col').set_index('index')[['col']]
print (df)
      col
index    
1       a
2       a
3       a
1       b
2       b
3       b
1       c
2       c
3       c

numpy.repeatnumpy.tileDataFrame构造函数::

a = np.repeat(df.columns, len(df))
b = np.tile(df.index, len(df.columns))
df = pd.DataFrame(a, index=b, columns=['col'])
print (df)
  col
1   a
2   a
3   a
1   b
2   b
3   b
1   c
2   c
3   c

答案 1 :(得分:2)

另一种方式是,

pd.DataFrame(list(itertools.product(df.index, df.columns.values))).set_index([0])

输出:

   1
0   
1  a
1  b
1  c
2  a
2  b
2  c
3  a
3  b
3  c

准确输出:

使用sort_values

print pd.DataFrame(list(itertools.product(df.index, df.columns.values))).set_index([0]).sort_values(by=[1])

   1
0   
1  a
2  a
3  a
1  b
2  b
3  b
1  c
2  c
3  c