0

いくつかの株式でイベント調査を実行しています。その結果、列が株式ティッカー シンボル (SPY、GOOG、AAPL など) であり、インデックスがタイムスタンプである pandas DataFrame が生成されます。DataFrame 内のセルの値は NaN または 1 です。イベント DataFrame に基づいて注文 DataFrame を生成したいと思います。cell == 1 ごとにオーダーを作成したいので、applymap が適していると思いました。ただし、 applymap を使用すると、セルのインデックスと列が削除されるようです。以下のコードを試しました:

def appendOrder(orders, value):
    if value == 1:
        index = ["Year", "Month", "Day", "Stock", "OrderType", "Amount"]
        s = pd.Series(index=index)
        s["Stock"] = value.index

def createOrders(events):
    columns = ["Year", "Month", "Day", "Stock", "OrderType", "Amount"]

    orders = pd.DataFrame(columns=columns)
    events.applymap(lambda x: appendOrder(orders,x))

上記のコードは、値にインデックスがないため、appendOrder メソッドで中断します。

applymap が DataFrame で使用されている場合、インデックスと列の情報を保持する方法はありますか?

編集

イベント DataFrame のスニペットを次に示します。

                     SPY    GOOG    AAPL    XOM
2013-10-1-16:00:00   NaN     1      NaN      1
2013-10-2-16:00:00   NaN    NaN     NaN     NaN
2013-10-3-16:00:00   NaN    NaN     NaN     NaN
2013-10-4-16:00:00   1      NaN     NaN     NaN
2013-10-5-16:00:00   NaN    NaN     NaN     NaN
2013-10-6-16:00:00   1      NaN     1       NaN
2013-10-7-16:00:00   NaN    NaN     NaN     NaN
2013-10-8-16:00:00   NaN    1       NaN     NaN

上記のイベント DataFrame を以下の注文 DataFrame に変換したいと思います。

     Year     Month    Day   Stock    OrderType    Amount
0    2013      10       1    GOOG       Buy         100
1    2013      10       1    XOM        Buy         100
2    2013      10       4    SPY        Buy         100
3    2013      10       6    SPY        Buy         100
4    2013      10       6    AAPL       Buy         100
5    2013      10       8    GOOG       Buy         100

それが少し明確になることを願っています。

4

1 に答える 1