Also habe ich eine große Datenmenge auf nfl Statistiken von 2005 - 2016. Problem ist, es wurde eine neue Kategorie im Jahr 2009 hinzugefügt, so dass meine Spalten vor versetzt sind 2009. Ich möchte alle Zeilen, die 'NFL Season' Spalte < in der Saison 2009 nach rechts verschieben, aber nur Spalten 11 bis vorletzte Spalte (so [11: -1]).Pandas - Verschieben bestimmter Spalten bestimmter Zeilen basierend auf einem Spaltenwert
Ich schaffte es auf diese Weise, aber es dauert so lange, über alle diese Zeilen (etwa 10.000) zu iterieren. Gibt es einen schnelleren Weg, dies zu tun? Ich versuchte zu sehen, ob es eine Möglichkeit gab, die .isin
zu verwenden, wo ich sagen könnte, ob die Zeile in meinem 'rows_to_shift' ist, aber ich konnte nicht herausfinden, wie das funktionieren würde.
Und wie ich schon sagte, es muss einen besseren oder effizienteren Weg geben, den ich nur nicht kenne, während ich noch Pandas lerne.
Hier ist der Code, den ich verwendet haben:
rows_to_shift = rb_df[rb_df['NFL Season'] < 2009].index.tolist()
for i in rows_to_shift:
rb_df.iloc[[i],11:-1] = rb_df.iloc[[i],11:-1].shift(1,axis=1)
yup, das ist genau das! Ich war komplett über das Problem/die Lösung nachdenken. – chitown88