Je voudrais déplacer une colonne dans un Pandas DataFrame
, mais je n'ai pas été en mesure de trouver une méthode pour le faire à partir de la documentation sans réécrire l'ensemble du DF. Quelqu'un sait-il comment le faire? Trame de données:
## x1 x2
##0 206 214
##1 226 234
##2 245 253
##3 265 272
##4 283 291
Sortie désirée:
## x1 x2
##0 206 nan
##1 226 214
##2 245 234
##3 265 253
##4 283 272
##5 nan 291
Réponses:
la source
df['x2'] = np.roll(df['x2'], 1)
Vous devez utiliser
df.shift
ici.df.shift(i)
décale l'ensemble de la trame de données pari
unités vers le bas.Donc, pour
i = 1
:Contribution:
Production:
Alors, exécutez ce script pour obtenir la sortie attendue:
la source
Permet de définir le dataframe à partir de votre exemple en
Ensuite, vous pouvez manipuler l'index de la deuxième colonne en
et enfin re-combiner les colonnes simples
Peut-être pas rapide mais simple à lire. Envisagez de définir des variables pour les noms de colonne et le décalage réel requis.
Edit: Généralement, le décalage est possible par
df[2].shift(1)
comme déjà affiché, mais cela couperait le report.la source
Si vous ne voulez pas perdre les colonnes que vous déplacez au- delà de la fin de votre dataframe, ajoutez simplement le nombre requis en premier:
la source
Je suppose que les importations
Ajoutez d'abord une nouvelle ligne avec
NaN, NaN,...
à la fin de DataFrame (df
).Cela créera un nouveau DF df2. Peut-être qu'il y a un moyen plus élégant mais cela fonctionne.
Vous pouvez maintenant le déplacer:
la source
En essayant de répondre à un problème personnel et similaire au vôtre, j'ai trouvé sur Pandas Doc ce que je pense répondre à cette question:
J'espère aider les questions futures à ce sujet.
la source
Voici comment je fais:
Fondamentalement, je génère une trame de données vide avec l'index souhaité, puis je les concatène simplement. Mais j'aimerais vraiment voir cela comme une fonctionnalité standard dans les pandas, j'ai donc proposé une amélioration pour les pandas.
la source