2016-03-12 113 views
1

对于下面一个简单的程序不是索引,我期待第2个输出是一样的第一..set_index在大熊猫

这是为什么没有发生?

它在data1,只是一个为了改变data2

columnList = ["PID", "Sec", "Util", "random"] 

data1 = [('67123', 12, '85' , '100'), 
     ('67123', 112, '15', '100'), 
     ('87878', 23, "95", '100'), 
     ] 

df1 = pd.DataFrame(data1, columns=columnList) 
df1 = df1.set_index(["PID", "Sec"]) 
print df1 

     Util random 

PID Sec    

67123 12 85 100 

     112 15 100 

87878 23 95 100 
data2 = [('67123', 12, '85' , '100'), 
     ('87878', 23, "95", '100'), 
     ('67123', 112, '15', '100'), 
     ] 

df2 = pd.DataFrame(data2, columns=columnList) 
df2 = df2.set_index(["PID", "Sec"]) 
print df2 
      Util random 

PID Sec    

67123 12 85 100 

87878 23 95 100 

67123 112 15 100 

回答

0

这是默认显示的Multiindex。您可以通过将参数display.multi_sparse设置为Falsewith来临时更改它。

选项:display.multi_sparse

默认:真

功能:“Sparsify”多指标显示(不显示组内的外水平重复的元素)

Available optionsPandas

#default options 
#set temporary multi_sparse to True 
with pd.option_context('display.multi_sparse', True): 
    print df1 

      Util random 
PID Sec    
67123 12 85 100 
     112 15 100 
87878 23 95 100 

#same as 
print df1  

      Util random 
PID Sec    
67123 12 85 100 
     112 15 100 
87878 23 95 100 

#set temporary multi_sparse to False  
with pd.option_context('display.multi_sparse', False): 
    print df1  
      Util random 
PID Sec    
67123 12 85 100 
67123 112 15 100 
87878 23 95 100 

如果你想set it,使用方法:

pd.set_option('display.multi_sparse', False) 

和复位:

pd.reset_option('multi_sparse') 
+0

我曾试图但这不起作用。 –

+0

什么不行? – jezrael

+0

我已经设置的选项为: pd.set_option(“display.multi_sparse”,FALSE) 它仍然显示PID列2行的67213,我期待是在短短的一行,两行以秒对应于67213 –