Python 在数据帧上使用applymap,但保留索引/列信息

Python 在数据帧上使用applymap,但保留索引/列信息,python,pandas,Python,Pandas,我正在对一些股票进行一项事件研究,这将产生一个pandas数据框架,其中列是股票代码(SPY、GOOG、AAPL等),索引是时间戳。数据帧中的单元格的值为NaN或1。我想根据事件数据框生成订单数据框。因为我想为单元格==1的每一次创建一个订单,所以我认为applymap是合适的。但是,似乎使用applymap会将单元格的索引和列剥离。我尝试了下面的代码: def appendOrder(orders, value): if value == 1: index = ["Ye

我正在对一些股票进行一项事件研究,这将产生一个pandas数据框架,其中列是股票代码(SPY、GOOG、AAPL等),索引是时间戳。数据帧中的单元格的值为NaN或1。我想根据事件数据框生成订单数据框。因为我想为单元格==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时,是否仍保留索引和列信息?

编辑

以下是事件数据框的一个片段:

                     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
我想将上述事件数据框转换为以下订单数据框:

     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

我希望这能让事情更清楚一点。

熊猫行动的基础是:


从上面的堆叠数据框中处理和调整数据非常简单。接下来,您可以重置索引,将其拆分为年-月-日列,并将数学应用于现在位于单个列中的非NaN数据。

您可以发布数据样本以及您希望输出的内容吗?我不确定applymap是不是你想要的。
df.stack()
Out[25]: 
2013-10-1-16:00:00  GOOG    1
                    XOM     1
2013-10-4-16:00:00  SPY     1
2013-10-6-16:00:00  SPY     1
                    AAPL    1
2013-10-8-16:00:00  GOOG    1