gpt4 book ai didi

python - 循环字典以创建新 Pandas 列的最快 pythonic 方法

转载 作者:行者123 更新时间:2023-11-28 22:12:34 26 4
gpt4 key购买 nike

我有一个字典“c”,其中包含 30000 个键和大约 600000 个唯一 值(每个键大约有 20 个唯一 值)

我想创建一个新的 pandas 系列“'DOC_PORTL_ID'”以从“'image_keys'”列的每一行获取样本值,然后在我的字典中查找它的键并返回。所以我写了一个这样的函数:

def find_match(row, c):
for key, val in c.items():
for item in val:
if item == row['image_keys']:
return key

然后我使用 .apply 创建我的新专栏,例如:

df_image_keys['DOC_PORTL_ID'] = df_image_keys.apply(lambda x: find_match(x, c), axis =1)

这需要很长时间。我想知道我是否可以改进我的代码片段以使其更快。

我在谷歌上搜索了很多,但没能找到最好的方法。任何帮助将不胜感激。

最佳答案

您正在使用字典作为反向查找。坦率地说,你没有给我们足够的关于字典的信息。这 600,000 个值是否唯一?如果没有,您只会返回找到的第一个。这是预期的吗?


假设它们是唯一的

reverse_dict = {val: key for key, values in c.items() for val in values}

df_image_keys['DOC_PORTL_ID'] = df_image_keys['image_keys'].map(reverse_dict)

这与您自己所做的一样好。如果这些值不是唯一的,则您必须更好地解释您期望发生的情况。

关于python - 循环字典以创建新 Pandas 列的最快 pythonic 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54711480/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com