【问题标题】:Select column names by importance按重要性选择列名
【发布时间】:2016-11-19 21:24:01
【问题描述】:

我有一个包含 6 列和浮点值的数据框。所以我需要为每一行选择前 3 个列名(由空格分隔),每行中的值最高。例如用

rowIndex col1 col2 col3 col4 col5 col6 
       1  0.2  0.4  0.1  1.2  2.2  0.2
       2  4.1  2.3  0.1  2.2  0.2  0.2

结果看起来像:

rowIndex importances
       1  col5 col4 col2
       2  col1 col2 col3

【问题讨论】:

    标签: python sorting dataframe selection


    【解决方案1】:
    import pandas as pd
    import numpy as np
    
    nrows = 2
    ncols = 6
    df = pd.DataFrame(np.random.rand(nrows,ncols), index=list(range(nrows)), columns=['col1', 'col2', 'col3', 'col4', 'col5', 'col6'])
    
    print(df)
    
    for row in range(nrows):
        maxCol1, maxCol2, maxCol3 = 0, 0, 0
        for col in range(ncols):
            if(df.iloc[row, col] > df.iloc[row, maxCol1]):
                maxCol3 = maxCol2
                maxCol2 = maxCol1
                maxCol1 = col
            elif(df.iloc[row, col] > df.iloc[row, maxCol2]):
                maxCol3 = maxCol2
                maxCol2 = col
            elif(df.iloc[row, col] > df.iloc[row, maxCol3]):
                maxCol3 = col
        print("{} {} {} {}".format(row+1, df.columns[maxCol1], df.columns[maxCol2], df.columns[maxCol3]))
    

    会产生如下结果:

       col1      col2      col3      col4      col5      col6
    0  0.116408  0.316982  0.811001  0.964968  0.019989  0.674887
    1  0.241690  0.429653  0.456779  0.398780  0.861042  0.149223
    1 col4 col3 col6
    2 col5 col3 col2
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-03
      • 1970-01-01
      • 2023-04-07
      • 2023-01-31
      • 2012-04-06
      • 1970-01-01
      • 1970-01-01
      • 2021-10-10
      相关资源
      最近更新 更多