代码之家  ›  专栏  ›  技术社区  ›  Rafael Díaz

大熊猫的dplyr r排列函数等价

  •  0
  • Rafael Díaz  · 技术社区  · 6 年前

    我有一个类似的数据框架,我的想法是根据向量排列行 密序 ,如下所示。

    R代码:

    df = data.frame(A = c("apple","cherry","orange","banana"), B = c(25,37,15,28))
    df
           A  B
    1  apple 25
    2 cherry 37
    3 orange 15
    4 banana 28
    
    my_order = c(2,3,4,1)
    dplyr::arrange(df,my_order)
           A  B
    1 banana 28
    2  apple 25
    3 cherry 37
    4 orange 15
    

    我的问题是,如何在python中执行此操作,pandas中是否有类似的函数 dplyr::arrange() ?

    Python代码:

    import pandas as pd
    
    df = pd.DataFrame({'A': ["apple","cherry","orange","banana"], 'B': [25,37,15,28]})
    print(df)
            A   B
    0   apple  25
    1  cherry  37
    2  orange  15
    3  banana  28
    
    my_order = [1,2,3,0]
    df.iloc[my_order]
            A   B
    1  cherry  37
    2  orange  15
    3  banana  28
    0   apple  25
    
    3 回复  |  直到 6 年前
        1
  •  1
  •   cs95 abhishek58g    6 年前

    好吧,我知道了。您正在将argsorted索引传递给 arrange . 你可以用同样的方法 iloc 但是你必须 argsort 你的指数与之相反。

    my_order = [2,3,4,1]
    df.iloc[pd.np.argsort(my_order)]
    
            A   B
    3  banana  28
    0   apple  25
    1  cherry  37
    2  orange  15
    
        2
  •  1
  •   Anbu    6 年前

    我不确定功能是否正确。

    工作:

    import pandas as pd
    
    df = pd.DataFrame({'A': ["apple","cherry","orange","banana"], 'B': [25,37,15,28]})
    
    print(df)
    
    df['index']=[2,3,4,1]
    df.set_index('index',inplace=True)
    df.sort_index(inplace=True)
    
    print(df)
    
    
        3
  •  1
  •   BENY    6 年前

    用支票

    df.loc[pd.Series(my_order,index=df.index).sort_values().index]
    Out[42]: 
            A   B
    3  banana  28
    0   apple  25
    1  cherry  37
    2  orange  15