pandas 当 multiindex 不唯一时系列下降
pandas series drop when multiindex is not unique
考虑 pd.Series
s
midx = pd.MultiIndex.from_product([list('ABC'), np.arange(3)])
s = pd.Series(1, midx)
s
A 0 1
1 1
2 1
B 0 1
1 1
2 1
C 0 1
1 1
2 1
dtype: int64
使用drop
去掉横截面非常方便。例如
s.drop('A')
B 0 1
1 1
2 1
C 0 1
1 1
2 1
dtype: int64
但是如果我让索引不唯一
s = s.append(pd.Series(0, pd.MultiIndex.from_tuples([('A', 2)]))).sort_index()
s
A 0 1
1 1
2 1
2 0
B 0 1
1 1
2 1
C 0 1
1 1
2 1
dtype: int64
然后相同的 drop
不再有效。
s.drop('A')
A 0 1
1 1
2 1
2 0
B 0 1
1 1
2 1
C 0 1
1 1
2 1
dtype: int64
如何像以前一样掉落
期望的结果应该是(这不起作用,什么起作用)
s.drop('B')
A 0 1
1 1
2 1
2 0
C 0 1
1 1
2 1
dtype: int64
我不确定为什么 s.drop('B')
不起作用,但使用 level=0
参数却起作用。
s.drop('B', level=0)
A 0 1
1 1
2 1
2 0
C 0 1
1 1
2 1
dtype: int64
考虑 pd.Series
s
midx = pd.MultiIndex.from_product([list('ABC'), np.arange(3)])
s = pd.Series(1, midx)
s
A 0 1
1 1
2 1
B 0 1
1 1
2 1
C 0 1
1 1
2 1
dtype: int64
使用drop
去掉横截面非常方便。例如
s.drop('A')
B 0 1
1 1
2 1
C 0 1
1 1
2 1
dtype: int64
但是如果我让索引不唯一
s = s.append(pd.Series(0, pd.MultiIndex.from_tuples([('A', 2)]))).sort_index()
s
A 0 1
1 1
2 1
2 0
B 0 1
1 1
2 1
C 0 1
1 1
2 1
dtype: int64
然后相同的 drop
不再有效。
s.drop('A')
A 0 1
1 1
2 1
2 0
B 0 1
1 1
2 1
C 0 1
1 1
2 1
dtype: int64
如何像以前一样掉落
期望的结果应该是(这不起作用,什么起作用)
s.drop('B')
A 0 1
1 1
2 1
2 0
C 0 1
1 1
2 1
dtype: int64
我不确定为什么 s.drop('B')
不起作用,但使用 level=0
参数却起作用。
s.drop('B', level=0)
A 0 1
1 1
2 1
2 0
C 0 1
1 1
2 1
dtype: int64