【问题标题】:Change dataframe to index value pair将数据框更改为索引值对
【发布时间】:2017-09-16 08:20:05
【问题描述】:

我有一个形状为 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

除了提取列名和索引、形成笛卡尔积以创建 (row1, col1) 等索引并展平存储在“df”中的值之外,还有更简洁的方法吗?

【问题讨论】:

    标签: python pandas dataframe multi-index


    【解决方案1】:

    stack 用于Series,然后将to_frame 用于DataFrame

    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
    

    【讨论】:

    • 我如何从这个(row1,col3),(row3,col1)等中随机提取?
    • @Zanam 你应该熟悉 MultiIndexes :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-01
    • 2021-11-26
    • 2022-01-18
    • 2018-04-21
    相关资源
    最近更新 更多