将数据框更改为索引值对
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
我有一个形状为 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