将熊猫数据框中的列向上移动一位?
Posted
技术标签:
【中文标题】将熊猫数据框中的列向上移动一位?【英文标题】:Shift column in pandas dataframe up by one? 【发布时间】:2013-11-20 12:12:11 【问题描述】:我有一个熊猫数据框。我想“滞后”我的一个专栏。例如,将整列“gdp”向上移动 1,然后删除剩余行底部的所有多余数据,使所有列的长度再次相等。
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
无论如何要这样做?
【问题讨论】:
【参考方案1】: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.dropna()
,它将删除所有 NaN 行,而无需指定要删除的行数。【参考方案2】:
将列 gdp 上移:
df.gdp = df.gdp.shift(-1)
然后删除最后一行
【讨论】:
【参考方案3】:例如,轻松地移动 5 个值并摆脱 NaN 行,而无需跟踪您移动的值的数量:
d['gdp'] = df['gdp'].shift(-5)
df = df.dropna()
【讨论】:
【参考方案4】:时间在流逝。目前的 Pandas 文档推荐这种方式:
df.loc[:, 'gdp'] = df.gdp.shift(-1)
【讨论】:
【参考方案5】:df.gdp = df.gdp.shift(-1) ## shift up
df.gdp.drop(df.gdp.shape[0] - 1,inplace = True) ## removing the last row
【讨论】:
【参考方案6】:先移列:
df['gdp'] = df['gdp'].shift(-1)
第二次删除包含 NaN Cell 的最后一行:
df = df[:-1]
第三次重置索引:
df = df.reset_index(drop=True)
【讨论】:
以上是关于将熊猫数据框中的列向上移动一位?的主要内容,如果未能解决你的问题,请参考以下文章