全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 数据分析与数据挖掘
507 1
2023-02-16

我有一个字典“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)

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


解决办法:

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)


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2023-2-21 20:28:02
感谢分享!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群