将数据框更改为索引值对

时间:2017-02-21 19:35:06

标签: python pandas dataframe multi-index

我的形状为2000x50的pandas数据帧'df'显示为:

       Col1     Col2   Col3
row1  0.046878  0.298156  0.743520  
row2  0.442526  0.881977  0.885514  
row3  0.075382  0.622636  0.706607  

在我的实际场景中,行和列没有一致的命名。

我想创建一个多索引的数据框:

(row1, col1), 0.046878
(row3, col2), 0.622636, etc

除了提取列名和索引,形成cartisian产品以创建像(row1,col1)等索引并将'df'中存储的值展平之外,还有更简洁的方法吗?

1 个答案:

答案 0 :(得分:2)

Series使用stackDataFrame使用to_frame

df = df.stack().to_frame('col')
print (df)
                col
row1 Col1  0.046878
     Col2  0.298156
     Col3  0.743520
row2 Col1  0.442526
     Col2  0.881977
     Col3  0.885514
row3 Col1  0.075382
     Col2  0.622636
     Col3  0.706607

然后sample

df = df.stack().to_frame('col').sample(n=3)
print (df)
                col
row1 Col2  0.298156
row3 Col1  0.075382
     Col2  0.622636