【发布时间】:2019-06-04 15:43:25
【问题描述】:
“unique_receivers”是一个 Pandas 数据框,其中包含用于唯一交易接收者的列、金额和用于我想用函数填充的类别的空列。
unique_receivers
Receiver Amount Category
144 SALE -18.93
141 TACO BELL -19.20
78 MCDONALDS -19.65
104 EXPRESS -20.00
154 SHOP -24.00
我想根据其“接收者”列与另一个数据帧“category_searchterms”中的搜索词匹配来填充上述数据框的“类别”列。
“category_searchterms”以类别作为列名,每个类别的列都有各自的搜索词。
这是该数据框的示例:
categories
Groceries Electricity Fastfood
0 SHOP ELCOMPANY MCDONALDS
1 MARKET POWER SUBWAY
2 SALE PIZZA
我想遍历“unique_receivers”的“Receiver”列的每一行,在“categories”数据框中查找匹配项,获取匹配列的名称并将其分配给第一个数据框的“Category” "列。
我正在尝试使用此功能:
def add_category(searchterm):
unique_receivers["Category"] = (category_searchterms == searchterm).any().idxmax()
然后调用它:
unique_receivers.apply(add_category(unique_receivers["Receiver"]), axis=1)
问题:
TypeError: ("'NoneType' object is not callable", 'occurred at index 144')
索引 144 是“unique_receivers”中的第一行。如果我现在调用数据框,则每一行都填充了第一个类别:
unique_receivers
Receiver Amount Category
144 SALE -18.93 Groceries
141 TACO BELL -19.20 Groceries
78 MCDONALDS -19.65 Groceries
104 EXPRESS -20.00 Groceries
154 SHOP -24.00 Groceries
如何让真正匹配的类别出现在每一行的“类别”列中?谢谢。
【问题讨论】:
-
如果接收者的名字中有空格,即两个或多个单独的单词怎么办?这些方法只能找到 1-word 接收者?
标签: python pandas function dataframe string-matching