将数据框更改为索引值对

Change dataframe to index value pair

我有一个形状为 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' 中的值之外,是否有更简洁的方法来执行此操作。

DataFrame使用stack for Series and then 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