2017-07-28 47 views
1

举一个简单的pd.Series在多指标与多指标删除重复指数无论为了

#create the multiindex and data 
mult = pd.MultiIndex.from_product([[1,2,3],[1,2,3]],names=['factor1','factor2']) 
data = np.arange(1,4)*np.arange(1,4)[:,np.newaxis] 

#create the series 
ser = (pd.Series(data.ravel(), 
       index=mult, 
       name='product') 
     .sort_values(ascending=False)) 

print(ser) 
factor1 factor2 
3  3   9 
     2   6 
2  3   6 
     2   4 
3  1   3 
1  3   3 
2  1   2 
1  2   2 
     1   1 
Name: product, dtype: int64 

如何可以复制指数,不分顺序,删除,因此,最后的系列是

factor1 factor2 
3  3   9 
     2   6 
2  2   4 
3  1   3 
2  1   2 
1  1   1 
Name: product, dtype: int64 

想法是2*33*2是相同的因素,所以我们想摆脱一个。我试过drop_duplicates,但是这消除了任何重复的产品,不管它们的索引如何(因此1*02*0将被视为重复项)。

回答

1

哈克

ser[~pd.DataFrame(np.sort(np.array(ser.index.tolist()), 1)).duplicated().values] 

factor1 factor2 
3  3   9 
     2   6 
2  2   4 
3  1   3 
2  1   2 
1  1   1 
Name: product, dtype: int64 
+0

哈克,但工作。谢谢! – user1717828