将大熊猫数据框中的列向上移动一个?

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

无论如何都要这么做吗?

149942 次浏览
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

向上移列国内生产总值:

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

然后删除最后一行

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

例如,可以很容易地移动5个值,还可以去除 NaN 行,而不必跟踪移动的值的数量:

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

First shift the column:

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

第二,删除包含 NaN Cell 的最后一行:

df = df[:-1]

第三,重置指数:

df = df.reset_index(drop=True)

时间在流逝,现有的熊猫文献建议这样做:

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