python - 将 DF 列中的部分值与指定列表匹配并检索频率
问题描述
我有一个形式的数据框:
Room Location
0 jc room g
1 merten 3005
2 merten 2500
3 merten 3005
4 merten 3005
5 merten 3005
6 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) + 1
num_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 39
jc cinema 35
merten 2500 31
jc gold rm 31
the hub corner pocket 30
令人沮丧的是,它完全按照它所说的那样做,我的问题如下:
如何解析列(或我应该说的列表->字符串)并将列的元素与指定列表的元素部分匹配,即使该元素附加了过多的“噪声”,或者例如:
jc room g = jc
merten 3005 = merten
理想情况下,return dict 应该只有 5 个键来返回,这些键room_list
和它们的后续频率。我也尝试去除所有数字,但由于某些元素有过多的字符串噪音,问题仍然存在。
我已经搜索了以前的相关问题,但没有找到任何特定于我的问题的内容,但是如果您发现(相关)欺骗,请告诉我,以免浪费您的时间。谢谢!
解决方案
我的解决方案:
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}
推荐阅读
- asynchronous - TCL中的fileevent非常慢
- android - 模拟 SharedPreferences.Editor.putString()
- tfs - 为什么 tfs 2018 部署组阶段将在前一个部分失败后运行?
- python - 如何使用 python 从 sqlite 获取数据?
- javascript - 无需jQuery UI即可在分隔符的拖放上调整Div大小
- batch-file - 批处理 - 功能 - 参数不起作用
- android - 在我的应用中显示受保护的版权视频
- html - 默认隐藏RPubs文档中的工具栏
- github - 在应用程序 GUI 上注释 github 问题
- c++ - 在 C++ 中初始化邻接矩阵