将熊猫数据框中的列向上移一格?


86

我有一个熊猫数据框。我想“落后”我的专栏之一。例如,这意味着将整个列“ 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

无论如何要这样做?

Answers:


154
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()


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.