Pandalar veri çerçevesindeki sütun birer birer yukarı kaydırılsın mı?


90

Pandalar veri çerçevem ​​var. Sütunlarımdan birini 'geciktirmek' istiyorum. Bunun anlamı, örneğin, tüm 'gdp' sütununu birer birer yukarı kaydırmak ve ardından kalan satırların altındaki tüm fazla verileri kaldırarak tüm sütunların yeniden eşit uzunlukta olmasını sağlamaktır.

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

Neyse bunu yapmak için?

Yanıtlar:


159
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

1
Sadece kullanın df.dropna()ve bırakılacak satır sayısını belirtmenize gerek kalmadan tüm NaN satırlarını bırakacaktır.
ArmandduPlessis

8

gdp sütununu yukarı kaydır:

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

ve sonra son satırı kaldır


4

Örneğin, kolayca 5 değer kaydırmak ve ayrıca, kaydırdığınız değerlerin sayısını takip etmek zorunda kalmadan NaN satırlarından kurtulmak için:

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

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

0

İlk önce sütunu kaydırın:

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

İkinci olarak, bir NaN Hücresi içeren son satırı kaldırın:

df = df[:-1]

Üçüncü olarak endeksi sıfırlayın:

df = df.reset_index(drop=True)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.