索引进入熊猫系列列表

时间:2018-08-02 17:53:31

标签: python pandas

我有一个熊猫系列对象列表obj和一个索引列表idx。我想要的是一个新系列out,如果idx不是obj[idx]idx,则255中的每一行都包含-1的值否则。

下面的代码实现了我想要的目标,但是我想知道是否有更好的方法可以做到这一点,特别是无需先创建Python列表然后将其转换为熊猫系列的开销。

>>> import pandas as pd
>>> obj = [pd.Series([1, 2, 3]), pd.Series([4, 5, 6]), pd.Series([7, 8, 9])]
>>> idx = pd.Series([0, 255, 2])
>>> out = pd.Series([obj[idx[row]][row] if idx[row] != 255 else -1 for row in range(len(idx))])
>>> out
0    1
1   -1
2    9
dtype: int64
>>>

谢谢。

1 个答案:

答案 0 :(得分:2)

使用reindex + lookup

pd.Series(pd.concat(obj,1).reindex(idx).lookup(idx,idx.index)).fillna(-1)
Out[822]: 
0    1.0
1   -1.0
2    9.0
dtype: float64
相关问题