【发布时间】:2021-12-22 11:02:22
【问题描述】:
我正在努力寻找一种“pythonic”方式来使这个逻辑工作:
我有一个带有一列字符串(“受益人”)的支付交易数据框:
| index | beneficiary |
|---|---|
| 12 | REWE SAGT DANKE. ... |
| 13 | NaN |
| 14 | OBI BAU- U. HEIMWER//BERLIN/DE / OBI SAGT DANKE |
| 15 | NETFLIX INTERNATIONAL B.V. |
我需要在我的数据框中创建另一列,这将是每一行所属的类别。
| index | beneficiary | category |
|---|---|---|
| 12 | REWE SAGT DANKE. ... | Groceries |
| 14 | OBI BAU- U. HEIMWER//BERLIN/DE / OBI SAGT DANKE | Groceries |
| 15 | NETFLIX INTERNATIONAL B.V. | Entertainment |
我正在考虑制作一个像下面这样的字典,并以某种方式从上面的列中的类别字典中反向查找子字符串值:
categories = {"Groceries": ["EDEKA", "REWE", "OBI"],
"Entertainment": ["NETFLIX"]}
逻辑是:如果子字符串“REWE”在df['beneficiary']中,那么df['category']等于子字符串所在的dict元素的key。
我对其他映射逻辑持开放态度。
【问题讨论】:
-
这样的规则有多少,受益人姓名有多长?如果这些数字变大,基于 trie 的算法可能是最渐近有效的。如果这些数字很小,最好只扫描每个关键字的每个受益人。
标签: python pandas list dictionary categories