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)
然后我打电话_f
的apply
: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)
任何人都可以解释原因吗?
我有一个很长的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
它很长,我需要一个非常快速的算法来解决它.