【问题标题】:Slicing a MultiIndex切片多索引
【发布时间】:2021-12-31 12:29:52
【问题描述】:

我想将MultiIndex 分割为第一级标签NY,从标签8 开始分割第二级。我该怎么做?

这里是MultiIndex:

输出应如下所示:

VA  8  Value
    9  Value 
MD  8  Value
    9  Value
NY  8  Value
    9  Value

下面是用于生成MultiIndex的代码:

states = ['VA','MD','NY','NJ','TX']
cd = list(range(10))
idx = pd.MultiIndex.from_product([states, cd])
s = pd.Series(np.random.rand(50), index=idx)

【问题讨论】:

  • "将多索引切片到标签 'NY'" 你到底是什么意思?
  • @user17242583,我已经关联了输出,希望对您有所帮助。
  • @user17242583 代码在底部提到
  • 状态需要先按字母顺序排序。这有关系吗?
  • 不,它没有,但那将是一个偏好。

标签: python pandas series multi-index


【解决方案1】:

你必须先用sort_index排序:

subset = s.sort_index(level=0)['MD':'NY'].loc[:, 8:9]

输出:

>>> subset
MD  8    0.222916
    9    0.525990
NJ  8    0.888443
    9    0.374329
NY  8    0.569863
    9    0.680583
dtype: float64

【讨论】:

  • 这应该也可以:s.sort_index().loc[slice('MD', 'NY'), slice(8, None)]
  • 哦,是的,酷!但你可以更浓缩:s.sort_index().loc['MD':'NY', 8:]
  • s.sort_index().loc[ :'NY', 8:],这对我也有用。
猜你喜欢
  • 2021-08-25
  • 2015-03-16
  • 2018-10-31
  • 2019-10-28
  • 2019-03-29
  • 2022-11-03
  • 2018-02-28
  • 1970-01-01
  • 2021-12-18
相关资源
最近更新 更多