我有这样的数据框
+----+------------+------------+------------+
| | | 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]])
无论 'res_number' 出现什么,它都由 'id(=a)' 索引,我知道这一点
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 - 数据框分层索引加速,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49103516/