我刚开始用python编写代码。作为一个初学者,我测试了不同的编码方法以了解它们的效率。我有一个dataframereview
存储了许多列,我想用一个分隔符“-”连接两列中的每一行-country
和variety
。
如果我尝试使用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
我想知道为什么效率有这么大的差异?
最佳答案
你应该避免对熊猫使用lambda表达式。.str.cat()
是一个系列的方法,旨在轻松地转换整个熊猫系列,而lamba创建了一个不属于熊猫的字体,它逐个浏览每一行。
关于python - 为什么str.cat比python中的lambda表达式快得多?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49938732/