python – Dataframe hierachical索引加速

我有这样的数据帧

+----+------------+------------+------------+
|    |            |    type    | payment    | 
+----+------------+------------+------------+
| id | res_number |            |            | 
+----+------------+------------+------------+
|  a |     1      |    toys    | 20000      |
|    |     2      |  clothing  | 30000      |
|    |     3      |    food    | 40000      |
|  b |     4      |    food    | 40000      |
|    |     5      |   laptop   | 30000      |
+----+------------+------------+------------+

正如你可以看到id,res_number是分层行值,而type,payment是普通列值.我想得到的是下面.

array([['toys', 20000],
   ['clothing', 30000],
   ['food', 40000]])

它被’id(= a)’索引,无论’res_number’来了,我知道

df.loc[['a']].values

完美适用于它.但索引的速度太慢了…我必须索引150000个值.

所以我索引数据帧

df.iloc[1].values

但它只带来了

array(['toys', 20000])

在索引层次结构时,是否有更快的索引方法?

最佳答案
选项1
pd.DataFrame.xs

df.xs('a').values

选项2
pd.DataFrame.loc

df.loc['a'].values

选项3
pd.DataFrame.query

df.query('ilevel_0 == \'a\'').values

选项4
多一点回合,使用pd.MultiIndex.get_level_values创建一个掩码:

df[df.index.get_level_values(0) == 'a'].values
array([['toys', 20000],
       ['clothing', 30000],
       ['food', 40000]], dtype=object)

转载注明原文:python – Dataframe hierachical索引加速 - 代码日志