我的形状为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'中存储的值展平之外,还有更简洁的方法吗?
答案 0 :(得分:2)
Series
使用stack
,DataFrame
使用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