为什么?结构类别比python中的lambda表达式快得多?

2024-05-20 16:06:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚开始用python编写代码。作为一个初学者,我测试了不同的编码方式,看看它们的效率。我有一个数据帧review存储了许多列,我想用分隔符'-'连接两列的每一行-countryvariety。你知道吗

如果我试着用lambda表达式来做这个工作,它会是这样的:

start = time.time()
ans = reviews[['country','variety']]
ans = ans.dropna(axis = "index", how = "any")
ans = ans.apply(lambda srs: srs.country + " - " + srs.variety, axis = "columns")
ans.value_counts()
end = time.time()
print(end - start)
# time elapsed: 3.825517416000366

如果我尝试结构类别方法,如下所示:

start = time.time()
ans = reviews[['country','variety']]
ans = ans.dropna(axis = "index", how = "any")
ans = ans.country.str.cat(ans.variety, sep = ' - ')
ans.value_counts()
end = time.time()
print(end - start)
# time elapsed: 0.14058899879455566

我想知道为什么效率上有这么大的差异?你知道吗


Tags: lambdaindextimeanycountrystarthowend
1条回答
网友
1楼 · 发布于 2024-05-20 16:06:51

你应该避免在熊猫身上使用lambda表达式。

.str.cat()是一个系列的方法,旨在轻松地转换整个pandas系列,而lamba创建的函数不是pandas的一部分,它逐个浏览每一行。你知道吗

相关问题 更多 >