我的目标是通过从每行的不同列中选择一个元素,从Pandas数据框创建一个系列。
例如,我有以下数据帧:
In [171]: pred[:10]
Out[171]:
0 1 2
Timestamp
2010-12-21 00:00:00 0 0 1
2010-12-20 00:00:00 1 1 1
2010-12-17 00:00:00 1 1 1
2010-12-16 00:00:00 0 0 1
2010-12-15 00:00:00 1 1 1
2010-12-14 00:00:00 1 1 1
2010-12-13 00:00:00 0 0 1
2010-12-10 00:00:00 1 1 1
2010-12-09 00:00:00 1 1 1
2010-12-08 00:00:00 0 0 1
我有以下系列:
In [172]: useProb[:10]
Out[172]:
Timestamp
2010-12-21 00:00:00 1
2010-12-20 00:00:00 2
2010-12-17 00:00:00 1
2010-12-16 00:00:00 2
2010-12-15 00:00:00 2
2010-12-14 00:00:00 2
2010-12-13 00:00:00 0
2010-12-10 00:00:00 2
2010-12-09 00:00:00 2
2010-12-08 00:00:00 0
我想创建一个新系列,usePred,它根据useProb中的列信息从pred获取值,以返回以下信息:
In [172]: usePred[:10]
Out[172]:
Timestamp
2010-12-21 00:00:00 0
2010-12-20 00:00:00 1
2010-12-17 00:00:00 1
2010-12-16 00:00:00 1
2010-12-15 00:00:00 1
2010-12-14 00:00:00 1
2010-12-13 00:00:00 0
2010-12-10 00:00:00 1
2010-12-09 00:00:00 1
2010-12-08 00:00:00 0
最后一步是我失败的地方。我试过这样的事情:
usePred = pd.DataFrame(index = pred.index)
for row in usePred:
usePred['PREDS'].ix[row] = pred.ix[row, useProb[row]]
我试过:
usePred['PREDS'] = pred.iloc[:,useProb]
我在stackoverflow上搜索了几个小时,但似乎无法解决这个问题。
一种解决方案可以是使用get dummies(应用时,应该更有效):
你可以用一个申请表和几个地方:
诀窍在于您可以通过name属性访问行索引。
下面是使用DataFrame.lookup的另一种方法:
这似乎正是您所需要的,只是必须注意提供标签的值。例如,如果
pred.columns
是字符串,而useProb['0']
值是整数,那么我们可以使用因此传递给
col_labels
参数的值是正确的标签值。例如
收益率
相关问题 更多 >
编程相关推荐