这既是关于理论的问题,也是关于语法的问题。我正在编写一个程序来对我的银行对账单中的交易进行分类,而我一直坚持这样做的最佳方法。
我有一系列“年度报表”数据框,每个数据框包含一年的交易额。这些包括列:
| description | type |
| sainsbury's | |
| js sainsbury | |
| amzn marketplace | |
| mbna | |
| amazon | |
| netflix | |
| gap | |
| vue | |
description
参与交易的供应商名称在哪里type
,我想填写一个空列。
我还有一个“分类”数据框,如下所示:
| type | search term |
| groceries | sainsbury |
| amazon | amzn marketplace |
| amazon | amazon |
| subscriptions | netflix |
| clothes | gap |
| luxuries | vue |
type
我所决定的一组事情在哪里提供了我花钱花的不错的总结,并且search term
是一个术语,可以用来识别哪些交易与哪些分类相关。
基本上,我需要将分类数据框中的搜索词与年报表数据框中的描述列匹配,然后将相应的条目从分类数据框中的类型列写入年报表数据框中的类型列。换句话说,我将得到此结果(请注意,在分类数据框中没有“ mbna”的类型的情况下,类型列留为空白):
| description | type |
| sainsbury's | groceries |
| js sainsbury | groceries |
| amzn marketplace | amazon |
| mbna | |
| amazon | amazon |
| netflix | subscriptions |
| gap | clothes |
| vue | luxuries |
至于规模,每个年度报表数据框中有成千上万的行,大约有十种不同的类型,并且可能少于一百个搜索词。
我对此有一些想法,但是我是Pandas的初学者,所以希望获得一些专家的帮助!
这似乎是一个非常简单的合并。您可以指定不同的列以匹配不同的数据框。这样的事情应该起作用:
result_df = annual_statemenets_df.merge(classifications_df, left_on="description", right_on="search term")
如果你关心效率,你可以设置匹配列作为指标,使用加入,这是更快(如说在这里)。
如果要用搜索词匹配字符串的一部分,则应使用replace,它支持正则表达式。首先,您需要将搜索词转换为正则表达式,以便在其中找到整个词组时选择整个词组,如下所示:
classifications_df["search term"] = ".*" + classifications_df["search term"] + ".*"
然后replace
将替换整个短语:
to_replace = classifications_df["search term"].tolist()
replace_with = classifications_df["type"].tolist()
annual_statemenets_df["type"] = annual_statemenets_df["description"].replace(to_replace, replace_with, regex=True)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句