在列表字典中反向查找子字符串

cc 3445

我正在努力尋找一種“pythonic”方式來使這個邏輯起作用:

我有一個帶有一列字符串(“受益人”)的支付交易數據框:

指數 受益人
12 瑞威說謝謝。...
13 NaN
14 OBI BAU- U. HEIMWER // 柏林 / DE / OBI 說謝謝
15 NETFLIX 國際 BV

我需要在我的數據框中創建另一列,這將是每一行所屬的類別。

指數 受益人 類別
12 瑞威說謝謝。... 雜貨
14 OBI BAU- U. HEIMWER // 柏林 / DE / OBI 說謝謝 雜貨
15 NETFLIX 國際 BV 娛樂

我正在考慮製作一個像下面這樣的字典,並以某種方式從帶有上面列的類別字典中反向查找子字符串值:

categories = {"Groceries": ["EDEKA", "REWE", "OBI"],
            "Entertainment": ["NETFLIX"]}

邏輯是:如果子字符串“REWE”在 df['beneficiary'] 中,則 df['category'] 等於子字符串所在的 dict 元素的鍵。

我對其他映射邏輯持開放態度。

莫茲韋

您可以使用正則表達式,為此您需要修改字典以將匹配的字符串作為鍵和類別作為值:

categories = {"Groceries": ["EDEKA", "REWE", "OBI"],
              "Entertainment": ["NETFLIX"]}

cat_sub = {v:k for k,l in categories.items() for v in l}
regex = r'(%s)' % '|'.join(fr'\b{c}\b' for c in cat_sub)
# regex looks like this: (\bEDEKA\b|\bREWE\b|\bOBI\b|\bNETFLIX\b)

df['category'] = df['beneficiary'].str.extract(regex)[0].map(cat_sub)

注意。我使用單詞邊界 ( \b) 來確保匹配完整的單詞,regex = r'(%s)' % '|'.join(cat_sub)如果您不想要這種行為,請使用

輸出:

   index                                       beneficiary       category
0      12                             REWE SAGT DANKE. ...      Groceries
1      13                                              NaN            NaN
2      14  OBI BAU- U. HEIMWER//BERLIN/DE / OBI SAGT DANKE      Groceries
3      15                       NETFLIX INTERNATIONAL B.V.  Entertainment

注意。如果需要刪除 NaN,請使用dropna

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在列表和字典的字典中查找字符串

如果字符串中有相同的键,则在列表字典中创建新列表

如何在可能包含更多列表或字典列表的嵌套字典中查找子字符串的所有实例

拆分列表字符串并创建字典

在包含字典的列表中查找特定字符串的计数

在列表列表中查找子字符串

从列表中的子字符串返回与包含子字符串的字典的匹配值

在Python中的列表中查找子字符串

如何在单词列表中查找子字符串

在带有子字符串的列表中查找元素

在列表字典中查找循环

在pandas df中删除列表字符串startswith

检查列表字符串 BigQuery 中的元素

分别访问列表字符串中的每个元素

查找与列表匹配的子字符串

建立LINQ查询以从字符串字典/哈希获取字典列表字符串字典/字符串字典?

从给定列表中查找包含子字符串的字符串

替换为列表字符串

删除PostgreSQL表字符串中的子字符串

如何将列表字典写成字符串而不是CSV文件?

将字典列表字符串转换为数据框

如何获取列表字典的值并将其附加到字符串?

Python:在字符串列表中查找子字符串

在字符串列表中查找相等的子字符串

使用python在字符串列表中查找unqiue子字符串模式

通过推文的熊猫字符串列中的单词列表查找子字符串

在clojure的字符串列表中查找子字符串

列表字符串或元组字符串

查找其键与子字符串匹配的字典项