我有一个与此类似的数据框,我的想法是根据向量 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中做到这一点,在熊猫中有等效于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
答案 0 :(得分:1)
好的,我知道了。您正在将实参索引传递给gluLookAt()
。您可以使用arrange
做同样的事情,但是您必须iloc
来使索引取反。
argsort
答案 1 :(得分:1)
我不确定功能是否正确。
解决方法:
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)
答案 2 :(得分:1)
检查
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
答案 3 :(得分:1)
现在您无需学习 Pandas 的 API 即可将您的 R 代码转换为 Python 代码!
使用datar
:
>>> from datar import f
>>> from datar.tibble import tibble
>>> from datar.dplyr import arrange
>>> df = tibble(A = ["apple","cherry","orange","banana"], B = [25,37,15,28])
>>> df
A B
0 apple 25
1 cherry 37
2 orange 15
3 banana 28
>>> my_order = [2,3,4,1]
>>> df >> arrange(my_order)
A B
0 banana 28
1 apple 25
2 cherry 37
3 orange 15
我是包的作者。如果您有任何问题,请随时提交问题。