誰かがこの動作を私に説明できますか?リストとのインデックス付き.ixインデックスの使用による予期しない結果
import pandas as pd
dates = pd.date_range('1/1/2000', periods=8)
df = pd.DataFrame(np.random.randn(8, 4), index=dates, columns=['A', 'B', 'C', 'D'])
df.ix['2000-01-01':'2000-01-02', ['A', 'C']]
## Output:
A C
2000-01-01 0.224944 -0.689382
2000-01-02 -0.824735 -0.805512
df.ix[['2000-01-01', '2000-01-02'], ['A', 'C']]
## Output:
A C
2000-01-01 NaN NaN
2000-01-02 NaN NaN
私は両方のインデックス作成操作が同じ(最初の)結果を返すことを期待していました。私はパンダの内部を知らない、今
from datetime import datetime
df.loc[[datetime(2000, 1, 1), datetime(2000, 1, 5)], ['A','C']]
## Output
A C
2000-01-01 0.224944 -0.689382
2000-01-05 -0.393747 0.462126
、それは暗黙的に日付の文字列を変換し、なぜ範囲を与えられたときには、リストを与えられていないとき、私:
は、その後、私は一種のそれを得ました推測では、序数的な性質を持つオブジェクトを意味しているので、パンダはおそらくインデックスをチェックし、それが日時であると見て、その文字列を日付として解析します。
しかし、問題は、なぜ私たちが単一の文字列を供給するときに正しいことをするのでしょうか?
df.loc['2000-01-01', ['A','C']]
## Output:
A 0.224944
C -0.689382
Name: 2000-01-01 00:00:00, dtype: float64
リストが与えられたときに複数の値を変換しようとしないのはパフォーマンス上の問題ですか?いくつかの他のデザインの決定?
予期せぬ挙動を解明するのがさらに簡単です: 'df.ix [['2000-01-01'、 '2000-01-02']]' - NaNを与える – shx2
@ shx2まさに。そしてあなたが指摘したように、それは1つの日付文字列で正しいことを行います。 – kliron
私はこれが既知のバグだとはかなり確信していますが、誰もそれを実装したくない(または少なくとも誰も持っていません)。編集:私はgithubでそれを見つけることができません...しかし、それはどこかにあると思う。 –