Змістити стовпець у фреймі даних панд вгору на одиницю?


87

У мене є фрейм даних pandas. Я хочу "відставати" від однієї зі своїх колонок. Це означає, наприклад, зміщення всього стовпця 'gdp' вгору на одиницю, а потім видалення всіх надлишкових даних внизу решти рядків, щоб усі стовпці знову мали однакову довжину.

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

Все одно зробити це?

Відповіді:


155
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
Просто використовуйте, df.dropna()і він скине всі рядки NaN без необхідності вказувати кількість рядків для скидання.
ArmandduPlessis

8

зсунути стовпець gdp вгору:

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

а потім видаліть останній рядок


4

Наприклад, щоб легко зрушити значення на 5, а також позбутися рядків NaN, не відстежуючи кількість значень, які ви перенесли на

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


0

Перший зсув стовпця:

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

Друге видалити останній рядок, який містить комірку NaN:

df = df[:-1]

Третє скидання індексу:

df = df.reset_index(drop=True)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.