2015-06-06 120 views
1

我正在使用一個pandas DataFrame,並且想要將一列值/索引值減1。所以列表的數據幀長度會少一個。就這樣在我的例子形象:Python Pandas Dataframe將列值/索引值減1

DataFrame before -> after

新的數據幀應該是id 2-5,但當然,操縱1-4後,重新編制索引。有不止nameplace行。

我該如何快速操作DataFrame?

非常感謝。

回答

2

可以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 

如果你的「身份證」列索引上面仍然有效:

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  rome 
相關問題