开发者社区> 问答> 正文

dplyr R在pandas 中安排相同的功能

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

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

展开
收起
一码平川MACHEL 2019-01-23 15:45:50 2921 0
1 条回答
写回答
取消 提交回答
  • 你正在传递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


    检查

    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


    解决方法:

    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)

    2019-07-17 23:26:40
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
中文:即学即用的Pandas入门与时间序列分析 立即下载
即学即用的Pandas入门与时间序列分析 立即下载
低代码开发师(初级)实战教程 立即下载