代码之家  ›  专栏  ›  技术社区  ›  Nivi

提取列名称并在大熊猫中进行排序

  •  1
  • Nivi  · 技术社区  · 8 年前

    我有一个熊猫数据框,看起来像下面的数据框:

    A  |  B  | C   | D   |  E  |
    1  |  2  | 3.5 | 2.3 | 4.0 |
    

    我希望总是提取任何大于2.5的列C到E,并按其值的降序对它们进行排序。

    对于上述示例:

    E,C is the output
    
    2 回复  |  直到 8 年前
        1
  •  2
  •   cs95 abhishek58g    8 年前

    transpose + sort_values

    v = df.T.squeeze().loc['C':'E'].sort_values(ascending=False)
    v.index[v.gt(2.5)].tolist()
    ['E', 'C']
    

    stack + 排序\值

    v = (
       df.stack()
         .reset_index(level=0, drop=True)
         .loc['C':'E']
         .sort_values(ascending=False)
    )
    v.index[v.gt(2.5)].tolist()
    ['E', 'C']
    
        2
  •  1
  •   jpp    8 年前

    一种方法是通过 pd.DataFrame.columns.get_loc . 然后过滤并使用 pd.Series.index :

    vals = df.iloc[0, df.columns.get_loc('C'):]  # or df.loc[0, 'C':]
    res = vals[vals > 2.5].sort_values(ascending=False).index
    
    print(res)
    
    Index(['E', 'C'], dtype='object')