注:私がこの質問をしたので、.ix
まだ存在しますが、多かれ少なかれ.loc
、ラベルベースのインデックス作成と.iloc
位置インデックス作成のために置き換えられました。
ix
DataFrames のメソッドのドキュメントを読んだ後、MultiIndexed DataFrame (インデックスの選択列を指定) での次の動作に少し混乱しています。
In [57]: metals
Out[57]:
<class 'pandas.core.frame.DataFrame'>
MultiIndex: 24245 entries, (u'BI', u'Arsenic, Dissolved', -2083768576.0, 1.0)
to (u'WC', u'Zinc, Total', 1661183104.0, 114.0)
Data columns:
Inflow_val 20648 non-null values
Outflow_val 20590 non-null values
Inflow_qual 20648 non-null values
Outflow_qual 20590 non-null values
dtypes: float64(2), object(2)
In [58]: metals.ix['BI'].shape # first column in the index, ok
Out[58]: (3368, 4)
In [59]: metals.ix['BI', :, :, :].shape # first + other columns, ok
Out[59]: (3368, 4)
In [60]: metals.ix['BI', 'Arsenic, Dissolved'].shape # first two cols
Out[60]: (225, 4)
In [61]: metals.ix['BI', 'Arsenic, Dissolved', :, :].shape # first two + all others
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-62-1fb577ec32fa> in <module>()
----> 1 metals.ix['BI', 'Arsenic, Dissolved', :, :].shape
# traceback spaghetti snipped
KeyError: 'no item named Arsenic, Dissolved'
In [62]: metals.ix['BI', 'Arsenic, Dissolved', :, 1.0].shape # also fails
In [61]
で達成しようとしていたことが で可能であることに気付くのに長い時間がかかりましたIn [60]
。ix
メソッドがこのように動作するのはなぜですか? 私が実際に取得しようとしているのは、 のシナリオIn [62]
です。
私の推測では、インデックス階層を再定義する必要があると思いますが、もっと簡単な方法があるかどうか知りたいです。
ありがとう。