2016-01-06 97 views
1

我有這樣一個數據幀:如何基於列的條件重命名的大熊貓據幀指數

import pandas as pd 
df = pd.DataFrame(data= {"x": [1,2,3,4],"y":[5,6,7,8],"i":["a.0","a.1","a.0","a.1"]}).set_index("i") 
df 

日期:

 x y 
i   
a.0 1 5 
a.1 2 6 
a.0 3 7 
a.1 4 8 

,我想基於列的條件重新命名指數:

​​

什麼給我:

 x y 
i  
a.0>6 3 7 
a.1>6 4 8 

我就地=真正嘗試過,但它不工作

df.loc[df["y"]>6].rename(index=lambda x: x+ ">6" , inplace=True) 

我只能得到它的重置索引,通過申請,然後重新設置索引改變我列值完成:

df1 = df.reset_index() 
df1.loc[df1["y"]>6, "i"] = df1.loc[df1["y"]>6, "i"].apply(lambda x: x+ ">6") 
df1.set_index("i", inplace=True) 
df1 

日期:

 x y 
i  
a.0 1 5 
a.1 2 6 
a.0>6 3 7 
a.1>6 4 8 

但是,這是如此複雜。 你知道如果有更簡單的方法嗎?

回答

3

試試這個怎麼樣?

import numpy as np 
df.index=np.where(df['y']>6, df.index+'>6', df.index) 
+0

veeeery漂亮!謝謝!沒有想到numpy在哪裏 –