python - 列表理解和速度优化

标签 python pandas

我有一个 pandas 数据框,在该数据框中我有两个系列/列,我希望将它们组合成一个新的系列/列。我已经有一个 for 循环可以满足我的需要,但我宁愿它在列表理解中,但我无法弄清楚。此外,我的代码需要花费大量时间来执行。我读到列表理解运行得更快,也许有更快的方法?

如果来自“lead_owner”的值与来自“agent_final”的不同/唯一值匹配,则使用该值。否则使用“agent_final”中的值

for x, y in zip(list(df['lead_owner']), list(df['agent_final'])):
    if x in set(df['agent_final']):
        my_list .append(x)
    else:
        my_list .append(y)

最佳答案

使用列表理解来做到这一点的方法:

my_list = [x if x in set(df['agent_final']) else y for (x,y) in zip(list(df['lead_owner']), list(df['agent_final']))]

很难说出您的代码运行缓慢的原因,除非我知道您的数据有多大。

确实可以加快代码速度的一种方法是,不要在每次检查 x 是否在集合中时都构造集合。在 for 循环/列表理解之外构建集合:

agent_final_set = set(df['agent_final'])
my_list = [x if x in agent_final_set else y for (x,y) in zip(list(df['lead_owner']), list(df['agent_final']))]

关于python - 列表理解和速度优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58168084/

相关文章:

python - 计算字符串中的字母数(不是字符,只有字母)

python - 列出 Pyspark 中的 S3 文件

python-3.x - Pandas DataFrame.empty() 给出 TypeError : 'bool' object is not callable

python - Google Colab 中的数据表显示不符合数字格式

python - 使用python中的 Pandas 将背景颜色应用于excel中的一行

python - Pandas:根据复杂逻辑删除具有特定字符串的行和列

Python lxml xpath XPathEvalError : Invalid expression -- why?

python - 读取 CSV 文件中的所有列?

python - python 'Resource' 对象中的 Freebase API 没有属性 'mqlread'

python - 禁用数据框 pandas 的自动排序