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

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

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

一只斗牛犬 2023-03-08 15:55:41
目标:我想在我的 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任何帮助,将不胜感激!
查看完整描述

1 回答

?
12345678_0001

TA贡献1802条经验 获得超5个赞

您可以使用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     description

0                    [AA, pik(BB)]  Teagra    Billion Bobs

1         [(gem(BB), CC)], ril[DD]   Jenny   Double Dwarfs

2                    hur[AA, (EE)]  Justin     Eleven Elfs

3  zonk[EE, DD, CC, (BB], lux(AA))     Ray  Alot Anacondas


查看完整回答
反对 回复 2023-03-08
  • 1 回答
  • 0 关注
  • 74 浏览
慕课专栏
更多

添加回答

举报

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