J'ai un bloc de données similaire à celui-ci, mon idée est d'organiser les lignes selon le vecteur ma_ordre , comme indiqué ci-dessous.
Code R:
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
Ma question est de savoir comment puis-je faire cela en python, y a-t-il une fonction dans pandas, équivalent dplyr :: arrange ()
? p >
Code Python:
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
3 Réponses :
D'accord, je l'ai compris. Vous passez des index triés par arg à arrange
. Vous pouvez faire la même chose avec iloc
, mais vous devrez argsort
vos index pour obtenir son inverse.
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
Je ne suis pas sûr de la bonne fonction.
contourner:
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)
Vérifier avec
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
Cette sortie de commande de
arrange
me semble incorrecte ... comment ça marche?consultez les documents