在不使用列表推导式的情况下为列表中的每个列表切片pandas系列



我有一个熊猫系列,我想切片的基础上的切片索引列表。使用像

这样的列表推导非常简单
slizes = [[0,1,2],[4,5,6],[7,8,9]]
series = pd.Series(["a","b","c","d","e","f","g","h","i"])
[series.iloc[slize] for slize in slizes] #[["a","b","c"],["d","e","f"],...]

但是由于我有150万行和150万片,这需要相当长的时间。我想知道是否可以用更快的矢量化方式来完成?

结果可以是numpy-arrays, list, Series, tuples中的任何东西,这并不重要。

使用numpy很简单,如果子列表的大小总是相同的

a = series.to_numpy()
out = a[slizes]

输出:

array([['a', 'b', 'c'],
['e', 'f', 'g'],
['h', 'i', 'j']], dtype=object)

最新更新