3

(この日の安値)/(前日の終値) の最低値を含む新しいシリーズを作成したいと考えています。まず、条件ごとに日をフィルタリングします。

a=low['SPY'][low['SPY']<close['SPY'].shift(1)]
b=close['SPY'].shift(1)[low['SPY']>=close['SPY'].shift(1)]

a と b の両方に「穴」があります。

a:
2013-06-21 16:00:00    1577.70
2013-06-24 16:00:00    1560.33
2013-06-28 16:00:00    1601.06
2013-07-02 16:00:00    1606.77

b:
2013-06-25 16:00:00    1573.09
2013-06-26 16:00:00    1588.03
2013-06-27 16:00:00    1603.26
2013-07-01 16:00:00    1606.28

a と b を連結して、1 つの時系列を正しいインデックスで返すにはどうすればよいですか?

すべてのバリエーションで pd.concat を試しました (または、元のインデックスを使用してシリーズ C を作成し、それをマージしました) が、常に追加されるだけで、期待どおりにマージされません。

どうもありがとう!

4

1 に答える 1

2

sort_index追加/連結を行った直後ではないのはなぜですか?

In [11]: a.append(b) #  equivalent to pd.concat([a, b])
Out[11]:
2013-06-21 16:00:00    1577.70
2013-06-24 16:00:00    1560.33
2013-06-28 16:00:00    1601.06
2013-07-02 16:00:00    1606.77
2013-06-25 16:00:00    1573.09
2013-06-26 16:00:00    1588.03
2013-06-27 16:00:00    1603.26
2013-07-01 16:00:00    1606.28
dtype: float64

In [12]: a.append(b).sort_index()
Out[12]:
2013-06-21 16:00:00    1577.70
2013-06-24 16:00:00    1560.33
2013-06-25 16:00:00    1573.09
2013-06-26 16:00:00    1588.03
2013-06-27 16:00:00    1603.26
2013-06-28 16:00:00    1601.06
2013-07-01 16:00:00    1606.28
2013-07-02 16:00:00    1606.77
dtype: float64

効率のために、pandas はデフォルトではソートされず、明示的に要求する必要があります。

于 2013-07-12T18:28:11.710 に答える