我使用的是熊猫DataFrame,我想把一个列值/索引向下拉一个。因此,列表Dataframe的长度将减少一个。就像我的例子中的图片:

新的DataFrame应该是id 2-5,但当然在操作后再索引到1-4.不仅仅是name和place行。
我怎样才能这样快速地操作DataFrame呢?
非常感谢。
发布于 2015-06-06 10:29:23
您可以shift名称列,然后使用iloc获取一个切片。
In [55]:
df = pd.DataFrame({'id':np.arange(1,6), 'name':['john', 'bla', 'tim','walter','john'], 'place':['new york','miami','paris','rome','sydney']})
df
Out[55]:
id name place
0 1 john new york
1 2 bla miami
2 3 tim paris
3 4 walter rome
4 5 john sydney
In [56]:
df['name'] = df['name'].shift(-1)
df = df.iloc[:-1]
df
Out[56]:
id name place
0 1 bla new york
1 2 tim miami
2 3 walter paris
3 4 john rome如果您的“id”列是您的索引,那么上面的内容仍然有效:
In [62]:
df = pd.DataFrame({'name':['john', 'bla', 'tim','walter','john'], 'place':['new york','miami','paris','rome','sydney']},index=np.arange(1,6))
df.index.name = 'id'
df
Out[62]:
name place
id
1 john new york
2 bla miami
3 tim paris
4 walter rome
5 john sydney
In [63]:
df['name'] = df['name'].shift(-1)
df = df.iloc[:-1]
df
Out[63]:
name place
id
1 bla new york
2 tim miami
3 walter paris
4 john romehttps://stackoverflow.com/questions/30681446
复制相似问题