在相同的熊猫数据框中交换两行(连同索引)

时间:2019-03-31 09:21:57

标签: python pandas

我正在使用统一的转售价格dataset(如果您有兴趣,我将使用2015年1月以后的数据)。

首先,我通过使用将数据分组 data.groupby('flat_type').sum(),则数据变为: enter image description here

我尝试交换行

现在,我尝试使用this post的答案来交换最后两行:

b,c = data_by_type.iloc[-2], data_by_type.iloc[-1]
temp = data_by_type.iloc[-2].copy()
data_by_type.iloc[-2] = c
data_by_type.iloc[-1] = b

enter image description here

后两行的内容已更改,但后两行的索引保持不变。

所以我的问题是: 如何交换整个行,包括索引?

1 个答案:

答案 0 :(得分:1)

使用np.r_

df = df.iloc[np.r_[0:len(df) - 2, -1, -2]]

替代:

df = df.loc[df.index[:-2].tolist() + df.index[-1:].tolist() + df.index[-2:-1].tolist()]

print (df)
                  floor_area_sqm  lease_commence_date  remaining_lease  \
flat_type                                                                
1 ROOM                    1085.0                69125             1977   
2 ROOM                   40898.0              1788955            62356   
3 ROOM                 1430010.1             41448329          1344374   
4 ROOM                 3226160.4             67177320          2604002   
5 ROOM                 2349460.0             39663269          1555300   
MULTI-GENERATION          4105.0                49677             1708   
EXECUTIVE               943961.0             13059434           495628   

                  resale_price  
flat_type                       
1 ROOM            6.938000e+06  
2 ROOM            2.168112e+08  
3 ROOM            6.628663e+09  
4 ROOM            1.460442e+10  
5 ROOM            1.043298e+10  
MULTI-GENERATION  1.969189e+07  
EXECUTIVE         4.101716e+09