【发布时间】:2017-08-03 23:09:50
【问题描述】:
我对 Python 和 pandas 比较陌生,并且正在努力处理(分层)索引。我已经掌握了基础知识,但在更高级的切片和横截面中迷失了。
例如,使用以下数据框
import pandas as pd
import numpy as np
data = pd.DataFrame(np.arange(9).reshape((3, 3)),
index=pd.Index(['Ohio', 'Colorado', 'New York'], name='state'), columns=pd.Index(['one', 'two', 'three'], name='number'))
我想选择除索引为“Colorado”的行之外的所有内容。对于一个小数据集,我可以这样做:
data.ix[['Ohio','New York']]
但如果唯一索引值的数量很大,那就不切实际了。天真地,我希望像
这样的语法data.ix[['state' != 'Colorado']]
但是,这只会返回第一条记录“Ohio”,而不会返回“New York”。这可行,但很麻烦
filter = list(set(data.index.get_level_values(0).unique()) - set(['Colorado']))
data[filter]
肯定有一种更 Pythonic、更冗长的方式来做到这一点?
【问题讨论】: