0
我正在对一些股票进行事件研究,这导致熊猫DataFrame中的列是股票股票代码(SPY,GOOG,AAPL等),指数是时间戳。 DataFrame内的单元格的值为NaN或1.我想根据事件DataFrame生成一个订单DataFrame。因为我想为每个单元格== 1创建一个订单,所以我认为applymap是合适的。但是,看起来使用applymap剥去了索引和列的单元格。我试了下面的代码:在DataFrame上使用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方法中断了,因为value没有索引。
有没有办法在datamap上使用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
我希望能让它更清楚一些。
您可以发布您的数据样本以及您希望输出的样子吗?我不确定applymap是你想要的。 – TomAugspurger