如何使用多索引对 pandas 系列进行位置索引

How to do positional indexing on a pandas series with multi-index

我有一个系列

s

card  city
c1    t1      0.500000
      t2      0.250000
      t3      0.250000
c2    t2      0.666667
      t1      0.333333
Name: city, dtype: float64

我想获取每个 card 的顶部(或第 n 个)city 条目。我基本上想要 s.iloc[:,n] 类型的东西,即一种使用多索引对 pandas 系列进行位置索引的方法。我正在使用 pandas-1.3.2.

您可以使用 groupby.head:

s.groupby(level='card').head(1)

card  city
c1    t1      0.500000
c2    t2      0.666667
Name: city2, dtype: float64

要获取每个组的 n-th 个条目,请先 group 然后在每个组中使用 iloc。例如,要获取每张卡片的第二个条目:

n = 1
(s.groupby(level='card', group_keys=False)
  .apply(lambda g: g.iloc[n:n+1]))

card  city
c1    t2      0.250000
c2    t1      0.333333
Name: city2, dtype: float64