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
arrangeme semble incorrecte ... comment ça marche?consultez les documents