Python 在数据帧上使用applymap,但保留索引/列信息
我正在对一些股票进行一项事件研究,这将产生一个pandas数据框架,其中列是股票代码(SPY、GOOG、AAPL等),索引是时间戳。数据帧中的单元格的值为NaN或1。我想根据事件数据框生成订单数据框。因为我想为单元格==1的每一次创建一个订单,所以我认为applymap是合适的。但是,似乎使用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
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