我有一个 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/