遍历列的有效方法

四月

我有一个数据集看起来像这样:

import pandas as pd
data = {'stringID':['AB CD Efdadasfd','RFDS EDSfdsadf dsa','FDSADFDSADFFDSA']}
data = pd.DataFrame(data)
data['Index1'] = [[3,6],[7,9],[5,6]]
data['Index2'] = [[4,8],[10,13],[8,9]]

在此处输入图片说明

我根据Index1和Index2(均为列表)中的值计算了容量,当时我正在使用索引从stringID列中切片子字符串。目前这是我的计算结果:

data['Value1'] = [data['stringID'][i][data['Index1'][i][0]:data['Index2'][i][0]] for i in range(0,len(data['stringID']))]

在此处输入图片说明

它可以工作,但是如果我遍历大型数据集,它会非常慢。有什么更好的方法呢?谢谢!

安迪(Andy L.)

编辑

正如您所说的,您的真实数据集有3列以上,您只需要对3列进行切片就可以得到numpy nd-array,如下所示:

data['Value1'] = [x[y[0]:z[0]] for x, y, z 
                           in  data[['stringID','Index1','Index2']].to_numpy()]

您无法避免循环。但是,您可以使用numpy nd-array作为源来简化列表理解,例如,

data['Value1'] = [x[y[0]:z[0]] for x,y,z in data.to_numpy()]

30万行的时间

data = pd.concat([data]*100000, ignore_index=True)

In [1380]: %timeit [x[y[0]:z[0]] for x,y,z in data.to_numpy()]
617 ms ± 24.5 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

In [1382]: %timeit  [data['stringID'][i][data['Index1'][i][0]:data['Index2'][i][0]] for i in range(0,len(data['stringID']))]
11.3 s ± 320 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

因此,它比您的解决方案快18倍。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

遍历节点列表的有效方法?

来自分类Dev

遍历 BigInteger 的有效方法

来自分类Linux

遍历字典列表并将项追加到数据框中的列的有效方法

来自分类Dev

遍历PySpark DataFrame和创建新列的更有效方法

来自分类Dev

遍历扁平化2D Vec列的更有效方法

来自分类Javascript

遍历所有DOM元素的最有效方法?

来自分类Dev

如何有效遍历熊猫中的日期列

来自分类Dev

遍历列表的有效方法是什么?

来自分类Java

使用Java遍历列表的有效方法

来自分类Java

反向遍历ArrayList的最快,最有效方法

来自分类Dev

遍历数据框的有效方法

来自分类Dev

遍历复杂数组的有效方法

来自分类Dev

一种遍历多维数组的有效方法?

来自分类Dev

遍历多个DataFrame的更有效方法

来自分类Dev

遍历行和应用转换的有效方法

来自分类Dev

有效的图遍历算法

来自分类Dev

Redux的reducer遍历如何有效?

来自分类Dev

在Julia中有效遍历结构

来自分类Dev

有没有更有效的方法来遍历数据帧?

来自分类Dev

从3列更新1列的最有效方法

来自分类Java

被遍历一样有效,因为排在了Java 2D阵列列?

来自分类Dev

熊猫根据条件更改列值的有效方法

来自分类Dev

在Fortran中将列追加到数组的有效方法?

来自分类Dev

在 numpy 中更新特定列的最有效方法

来自分类Dev

按列使数组唯一的有效方法

来自分类Dev

使用联接更新多列的有效方法

来自分类Dev

检查DataReader中是否存在列的有效方法

来自分类Dev

从Numpy数组中删除列的有效方法?

来自分类Dev

合并熊猫中列的更有效方法