【问题标题】:How to identify key from python dictionary that contains a substring value that corresponds with column of dataframe?如何从包含与数据框列对应的子字符串值的python字典中识别键?
【发布时间】:2022-01-14 22:31:23
【问题描述】:

我有一个数据框,其中有一列 TaskName,其中包含各种任务字符串。我还有一个字典,其中键是我想要匹配的类别,值是标识类别的子字符串列表。 TaskName 的每条记录都包含这些字典值之一(一旦将 .lower() 应用于它),但我无法找到解决此问题的有效解决方案。数据框大约有 100,000 行,我能想出的唯一解决方案是嵌套的 for 循环和处理时间过长(超过 10 分钟)的 if 语句。如何有效地用对应的 catDict 键填充 df 的类别列?

df = pd.DataFrame({'JobId': [123,456,789],
                   'TaskName': ["Carpet [09743CARPET T/K 23525-346]", "QUALITY INSPECTION – 
                                 FINAL INSPECTION [2-93 QUALITY 43634]", "Install Glue Down 
                                 Wood [98053vPREFAB WOOD FLOOR 2935]"],
                   'Category': ["","",""]})

catDict = {'Frame': ['concrete pump truck', 'quality inspection - final inspection'],
           'Final': ['prefab wood', 'carpet t/k']}

【问题讨论】:

    标签: python pandas dictionary indexing


    【解决方案1】:

    我不太清楚您是如何将任务映射到类别的。例如,任务 456 的类别 =“框架”,因为任务 456 的 TaskName 是“质量检查 - 最终检查”吗?

    如果是这样,我会尝试将 catDict 本身变成一个数据框,然后使用公共密钥将 (pd.merge) 合并到 df。您需要在 df 中创建一个新列,其中包含您要加入的密钥(通过对 TaskName 执行某种 str 操作)。要使 catDict 成为数据框,您可以执行 pd.DataFrame.from_dict(catDict, orient='index').transpose().melt() 之类的操作

    【讨论】:

    • 没错,我正在尝试通过包含在 TaskName 完整字符串中的 catDict 值将 TaskName 映射到 catDict。
    • 好的,您尝试我提到的解决方案了吗?这应该适用于您的情况。
    猜你喜欢
    • 2012-05-09
    • 2018-10-18
    • 1970-01-01
    • 2021-05-14
    • 1970-01-01
    • 1970-01-01
    • 2020-02-19
    • 2023-01-18
    • 1970-01-01
    相关资源
    最近更新 更多