如何在最后一个位置的熊猫单元格中找到字典值?

目标:我想在我的 pandas 数据框中添加一个名为“描述”的附加列,我有兴趣只查找“some_dictionary”中的项目。我字典中的许多值也在我的 Pandas 数据框中,但是,我只对找到最后一个位置的值感兴趣,然后将字典中的值作为描述添加到数据框中。


描述: 例如,如果我有 AA、BB、CC 的值,那么我有兴趣了解 CC 位于最后一个位置,然后将字典中的值添加到键 CC 中。在这种情况下,这将是“可数的猫”。


我的预期输出将是一个包含类别、所有者和描述的数据框。


some_dictionary = {

    "AA": "Alot Anacondas", 

    "BB": "Billion Bobs",

    "CC": "Countable Cats",

    "DD": "Double Dwarfs",

    "EE": "Eleven Elfs"

}


data = {'category': ["[AA, pik(BB)]", 

                     "[(gem(BB), CC)], ril[DD]", 

                     "hur[AA, (EE)]", "zonk[EE, DD, CC, (BB], lux(AA))"], 

        'owner': ["Teagra", "Jenny", "Justin", "Ray"]}

df_1 = pd.DataFrame(data=data)

df_1

任何帮助,将不胜感激!


一只斗牛犬
浏览 91回答 1
1回答

12345678_0001

您可以使用extractall提取字典中的所有键,并groupby().last()获取最后的键:pattern=rf'\b({"|".join(some_dictionary.keys())})\b'last_keys = df_1['category'].str.extractall(pattern)[0].groupby(level=0).last()# or# df_1['category'].str.findall(pattern).str[-1]df_1['description'] = last_keys.map(some_dictionary)更新:您还可以使用此模式来提取最后一次出现str.extract:pattern=rf'(?s:.*)\b({"|".join(some_dictionary.keys())})\b'last_keys = df_1['category'].str.extract(pattern)输出:                          category   owner     description0                    [AA, pik(BB)]  Teagra    Billion Bobs1         [(gem(BB), CC)], ril[DD]   Jenny   Double Dwarfs2                    hur[AA, (EE)]  Justin     Eleven Elfs3  zonk[EE, DD, CC, (BB], lux(AA))     Ray  Alot Anacondas
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python