为什么str.cat比python中的lambda表达式快得多?

时间:2018-04-20 09:44:26

标签: python pandas

我刚刚开始在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

如果我尝试使用str.cat方法,它将是这样的:

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

我想知道为什么效率会出现如此大的差异?

1 个答案:

答案 0 :(得分:0)

您应该避免将lambda表达式与pandas一起使用。

.str.cat()是一个系列'方法,旨在轻松转换整个大熊猫系列,而lamba创建一个不属于大熊猫的功能,它逐个浏览每一行。