7

このデータフレームを考えてみましょう:

df = pd.DataFrame({u'A': {2.0: 2.2,
  7.0: 1.4,
  8.0: 1.4,
  9.0: 2.2},  u'B': {2.0: 7.2,
  7.0: 6.3,
  8.0: 4.4,
  9.0: 5.0}})

次のようになります。

      A       B
2    2.2     7.2
7    1.4     6.3
8    1.4     4.4
9    2.2     5.0

2ラベルと7(文字列ではなく数字)でインデックスを取得したい

df.loc[[2, 7]]

エラーが発生します!

IndexError: indices are out-of-bounds

ただし、正常df.loc[7]df.loc[2]動作し、期待どおりに動作します。また、数値の代わりに文字列を使用してデータフレーム インデックスを定義すると、次のようになります。

df2 = pd.DataFrame({u'A': {'2': 2.2,
  '7': 1.4,
  '8': 1.4,
  '9': 2.2},
 u'B': {'2': 7.2,
  '7': 6.3,
  '8': 4.4,
  '9': 5.0}})

df2.loc[['2', '8']]

それは正常に動作します。

これは私が期待した動作ではありませんdf.loc(これはバグですか、それとも単なる落とし穴ですか?) 位置だけでなく、ラベル インデックスとして数値の配列を渡すことはできますか?

すべてのインデックスを文字列に変換して操作する.locことはできますが、残りのコードにとっては非常に不便です。

御時間ありがとうございます!

4

1 に答える 1

8

これは 0.12 のバグです。バージョン 0.13 ではこれが修正されています (IOW、ラベルの選択、リストを渡すときに数値または文字列が機能するかどうか)。

これを行うことができます(ただし、内部メソッドを使用します):

In [10]: df.iloc[df.index.get_indexer([2,7])]
Out[10]: 
     A    B
2  2.2  7.2
7  1.4  6.3
于 2013-11-07T19:35:41.083 に答える