楼主: 我是小趴菜
550 1

[数据挖掘新闻] 最快的pythonic方式循环字典以创建新的Pandas列 [推广有奖]

  • 0关注
  • 4粉丝

教授

35%

还不是VIP/贵宾

-

威望
0
论坛币
29650 个
通用积分
380.5350
学术水平
1 点
热心指数
1 点
信用等级
0 点
经验
7150 点
帖子
670
精华
0
在线时间
37 小时
注册时间
2022-8-30
最后登录
2023-4-4

楼主
我是小趴菜 发表于 2023-2-16 10:48:34 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

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


二维码

扫码加我 拉你入群

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

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

关键词:python pandas panda NIC Das

沙发
三重虫 发表于 2023-2-21 20:28:02
感谢分享!

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-4 02:00