Spalte im Pandas-Datenrahmen um eins nach oben verschieben?

Lesezeit: 1 Minute

Spalte im Pandas Datenrahmen um eins nach oben verschieben
natsuki_2002

Ich habe einen Pandas-Datenrahmen. Ich möchte eine meiner Kolumnen “hinken”. Das heißt zum Beispiel, die gesamte Spalte ‘gdp’ um eins nach oben zu verschieben und dann alle überschüssigen Daten am unteren Rand der verbleibenden Zeilen zu entfernen, damit alle Spalten wieder die gleiche Länge haben.

df =
    y  gdp  cap
0   1    2    5
1   2    3    9
2   8    7    2
3   3    4    7
4   6    7    7

df_lag =
    y  gdp  cap
0   1    3    5
1   2    7    9
2   8    4    2
3   3    7    7

Wie auch immer, dies zu tun?

Spalte im Pandas Datenrahmen um eins nach oben verschieben
Wouter Overmeire

In [44]: df['gdp'] = df['gdp'].shift(-1)

In [45]: df
Out[45]: 
   y  gdp  cap
0  1    3    5
1  2    7    9
2  8    4    2
3  3    7    7
4  6  NaN    7

In [46]: df[:-1]                                                                                                                                                                                                                                                                                                               
Out[46]: 
   y  gdp  cap
0  1    3    5
1  2    7    9
2  8    4    2
3  3    7    7

  • Benutz einfach df.dropna() und es werden alle NaN-Zeilen gelöscht, ohne dass Sie die Anzahl der zu löschenden Zeilen angeben müssen.

    – ArmandduPlessis

    14. Mai ’19 um 8:53


Spalte gdp nach oben verschieben:

df.gdp = df.gdp.shift(-1)

und dann die letzte Zeile entfernen

Um zum Beispiel einfach um 5 Werte zu verschieben und auch die NaN-Zeilen loszuwerden, ohne die Anzahl der Werte verfolgen zu müssen, um die Sie verschoben wurden:

d['gdp'] = df['gdp'].shift(-5)
df = df.dropna()

1641735456 502 Spalte im Pandas Datenrahmen um eins nach oben verschieben
Bilal Mahmood

df.gdp = df.gdp.shift(-1) ## shift up
df.gdp.drop(df.gdp.shape[0] - 1,inplace = True) ## removing the last row

Die Zeit geht. Und die aktuelle Pandas-Dokumentation empfiehlt diesen Weg:

 df.loc[:, 'gdp'] = df.gdp.shift(-1)

Spalte im Pandas Datenrahmen um eins nach oben verschieben
Jonas Freire

Verschieben Sie zuerst die Spalte:

df['gdp'] = df['gdp'].shift(-1)

Entfernen Sie anschließend die letzte Zeile, die eine NaN-Zelle enthält:

df = df[:-1]

Drittes Zurücksetzen des Index:

df = df.reset_index(drop=True)

.

214290cookie-checkSpalte im Pandas-Datenrahmen um eins nach oben verschieben?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy