为了账号安全,请及时绑定邮箱和手机立即绑定

将 DF 列中的部分值匹配到指定列表并检索频率

将 DF 列中的部分值匹配到指定列表并检索频率

DIEA 2021-11-30 16:25:14
我有一个如下形式的数据框:              Room Location0                 jc room g1               merten 30052               merten 25003               merten 30054               merten 30055               merten 30056                 jc bistro我目前正在尝试解析此特定列以提取此指定列表中的所有值:room_list = ['jc','sub', 'hub', 'merten', 'rsch', 'corner pocket', 'mix', 'fenwick']因此(而且效率很低)我使用:room_list = (MASTER_TABLE['Room Location'].astype(str).str.lower()).tolist()room_string = ''.join(room_list)room_freq = re.findall(r'|'.join(room_list), room_string)重申一下,经过一些预处理后,我将列转换为列表,然后是字符串,然后执行以下操作:freqs = {}for item in room_freq:    freqs[item] = freqs.get(item, 0) + 1num_sort_freqs = dict(sorted(freqs.items(), key=lambda x: x[1], reverse = True))print('Sorted name occurences: ','\n')print('===================================================================\n')for k, v in num_sort_freqs.items():    print(k, v)然而,这非常有效,当我返回“排序”字典时,我得到了这个:merten 1204 39jc cinema 35merten 2500 31jc gold rm 31the hub corner pocket 30令人沮丧的是,它完全按照它所说的去做,我的问题如下:我如何解析列(或列表 -> 我应该说的字符串)并将列的元素与指定列表的元素部分匹配,即使该元素附加了过多的“噪音”,或者例如:jc room g = jcmerten 3005 = merten理想情况下,返回 dict 应该只有 5 个要返回的键,room_list以及它们的后续频率。我也尝试去除所有数字,但由于某些元素具有过多的弦噪音,因此问题仍然存在。我已经搜索了以前的相关问题,但没有找到任何特定于我的问题的内容,但是如果您发现了(相关的)骗子,请告诉我,这样我就不会浪费您的时间。谢谢!
查看完整描述

1 回答

?
慕码人2483693

TA贡献1860条经验 获得超9个赞

我的解决方案在这里:


room_list = ['jc','sub', 'hub', 'merten', 'rsch', 'corner pocket', 'mix', 'fenwick']

for tag in room_list:

    result = df['Room Location'].str.lower().str.contains(tag).sum()

    print(f'{tag} : {result}')

输出:


jc : 2            

sub : 0          

hub : 0          

merten : 5       

rsch : 0         

corner pocket : 0

mix : 0          

fenwick : 0 

如果你想要一个 dict 作为输出,就这样做:


result= {}

for tag in room_list:

    result[tag] = df['Room Location'].str.lower().str.contains(tag).sum()

或克里斯的解决方案:


result = {tag : df['Room Location'].str.lower().str.contains(tag).sum() for tag in room_list}



查看完整回答
反对 回复 2021-11-30
  • 1 回答
  • 0 关注
  • 104 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信