无论顺序如何,删除多索引中的重复索引
Remove duplicates indices in multiindex regardless of order
采用多索引的简单 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*3
和 3*2
是相同的因素,所以我们想去掉一个。我试过 drop_duplicates
,但这会消除任何重复的产品,无论它们的索引如何(因此 1*0
和 2*0
将被视为重复)。
哈士奇
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
采用多索引的简单 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*3
和 3*2
是相同的因素,所以我们想去掉一个。我试过 drop_duplicates
,但这会消除任何重复的产品,无论它们的索引如何(因此 1*0
和 2*0
将被视为重复)。
哈士奇
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