小编Wed*_*oso的帖子

为什么有时候应用并不比pandas数据帧中的for-loop更快?

apply在大多数情况下,似乎可以加速数据帧的操作过程.但是当我使用时,apply我没有找到加速.这是我的例子,我有一个包含两列的数据框

>>>df
index col1 col2
1 10 20
2 20 30
3 30 40
Run Code Online (Sandbox Code Playgroud)

我想要做的就是通过实施函数来计算值,每一行数据帧R(x)col1,结果将由值划分col2.例如,第一行的结果应该是R(10)/20.所以这是我的函数,它将被调用apply

def _f(input):
  return R(input['col1'])/input['col2']
Run Code Online (Sandbox Code Playgroud)

然后我打电话_fapply:df.apply(_f, axis=1)

但我发现在这种情况下,apply比循环要慢得多

for i in list(df.index)
  new_df.loc[i] = R(df.loc[i,'col1'])/df.loc[i,'col2']
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释原因吗?

python pandas

6
推荐指数
1
解决办法
8062
查看次数

查找长列表中多个元素的索引

我有一个很长的lst包含独特元素.我想设计一个函数,它将元素列表作为输入,它可以有效地返回索引列表.我们假设找到他们的索引所需的项目都在lst.

这是一个例子:

lst = ['ab','sd','ef','de']
items_to_find = ['sd', 'ef', 'sd']
>>> fo(lst, items_to_find)  
# Output: [1,2,1]
Run Code Online (Sandbox Code Playgroud)

我有一个自己的解决方案,但效率不高.

>> [lst.index(x) for x in items_to_find]
Run Code Online (Sandbox Code Playgroud)

因为lst它很长,我需要一个非常快速的算法来解决它.

python

3
推荐指数
1
解决办法
399
查看次数

标签 统计

python ×2

pandas ×1