我刚刚开始在python中编码。作为初学者,我测试了不同的编码方式,以了解它们的效率。我有一个存储多个列的数据框review
,我希望连接两列的每一行 - 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
我想知道为什么效率会出现如此大的差异?
答案 0 :(得分:0)
您应该避免将lambda表达式与pandas一起使用。
.str.cat()
是一个系列'方法,旨在轻松转换整个大熊猫系列,而lamba创建一个不属于大熊猫的功能,它逐个浏览每一行。