【发布时间】:2021-12-07 09:27:29
【问题描述】:
我必须在具有数百个条件的数据框中创建一列。这包括查看文本。 :
print(df["Short description"].str.contains("e"))
此代码在一行中有效,但是当我将其与所有其他代码一起包含在我的函数中时,我收到错误:
attributeerror 'str' object has no attribute 'str'
现在,如果我在函数中执行基本 elseif 但不针对 Dataframe 执行其他所有操作,它可以工作:
"e" in df2["Short description"]: return "things"
所以我需要知道哪个对 Python 来说更快,知道我的函数是:
df2["Deversement Service"] = df2.swifter.apply(conditions, axis=1)
如果与上述类似,条件是数百个。
感谢您的帮助
【问题讨论】:
-
“我需要知道哪个对 Python 来说更快” - 你可以测试一下:docs.python.org/3.10/library/timeit.html
-
想了想,可惜条件太多了。而且如果我用几个条件测试,我想也许条件少的快的会变成几百个条件的慢的。我在网上没有找到任何测试
-
有两种评估性能的基本方法:1) 阅读源代码(在你的例子中是 Pandas 的)并根据所使用的算法推理其复杂性和效率; 2) 通过运行同一段代码数千次并分析运行该代码所花费时间的统计属性(在不同的细节级别)来进行分析和基准测试。您可能不需要深入研究 Pandas 的源代码,因此剩下的选择是基准测试和/或分析
-
请显示minimal reproducible example。如果错误认为
df["Short description"]是str,那么df是什么? -
我不知道如何在不提供私人信息的情况下简单地创建等效数据框。数据帧仅包含大写和小写的书面信息。而且我必须查看“简短描述”,因此是手动编写且非常可变的文本字段,因此我查看此列中的值是否包含精确值
标签: python pandas dataframe contains