Python-如果单元格包含子字符串,则从dict返回值

Python-如果单元格包含子字符串,则从dict返回值,python,pandas,dictionary,substring,lookup,Python,Pandas,Dictionary,Substring,Lookup,我正在使用excel文件,其中一列包含“说明”(=字符串,即“abc_123”),我需要根据说明创建类别。我检查了fuzzyfuzzy库,但它不太适合我的需要,因为描述可能很长,类别可以用一个词来描述,因此不匹配率很高 我是如何在excel中完成的(区分大小写): 在python中,我的解决方案只返回精确的匹配,我甚至希望返回部分匹配(如果可能,不区分大小写) 我希望col2:2中填充“1”,因为这是第一场比赛(a) 编辑: 字典-字典{“Hosp”:“医院”、“紧急情况”:“医院”、“消防队”

我正在使用excel文件,其中一列包含“说明”(=字符串,即“abc_123”),我需要根据说明创建类别。我检查了fuzzyfuzzy库,但它不太适合我的需要,因为描述可能很长,类别可以用一个词来描述,因此不匹配率很高

我是如何在excel中完成的(区分大小写):

在python中,我的解决方案只返回精确的匹配,我甚至希望返回部分匹配(如果可能,不区分大小写)

我希望col2:2中填充“1”,因为这是第一场比赛(a)

编辑: 字典-字典{“Hosp”:“医院”、“紧急情况”:“医院”、“消防队”:“消防队”}

我想:

“医院急诊”返回“医院”

“Hospi_emrgency.”返回“Hospital”

“医院急诊”返回“医院”

“底特律火灾”返回“消防部门”


终于找到了解决办法。这一点也不完美,但如果我有足够好的词典,这就行了。

对不起,你的问题不清楚。你能提供更多的样本数据和预期输出吗?这听起来像是机器学习的工作。准备一个示例数据集,将其提供给分类算法,然后让它尝试对剩余数据进行分类。一个很好的起点是查看scikit learn
=IFERROR(INDEX($B$2:$B$50,MATCH(1,--NOT(NOT(FIND($A$2:$A$50,B2))),0)),"N/A")
df = pd.DataFrame({'col1': {0: 'a', 1: "b", 2: "abc"}, 'col2': {0: np.nan, 1: np.nan, 2: np.nan}})
di = {"a": "1", "b":"2"}

    col1    col2
0   a   NaN
1   b   NaN
2   abc NaN

df.loc[df.col1.isin(di), 'col2'] = df['col1'].map(di)

col1    col2
0   a   1
1   b   2
2   abc NaN
for key, value in category_name.items():
    mask = np.column_stack([df['Description'].str.contains(key, na=False) for col in df])
    df2 = df.loc[mask.any(axis=1)]
    df2["Category"] = df2["Category"].fillna(value)
    df3 = df3.combine_first(df2)