【发布时间】:2020-07-12 09:43:02
【问题描述】:
我有一个熊猫数据框,其中包含各种尚未定义的类别(汽油、杂货、快餐等)的信用卡费用。
df1:
Category Date Description Cost
nan 7.1.20 Chipotle Downtown West $8.23
nan 7.1.20 Break Time - Springfield $23.57
nan 7.3.20 State Farm - Agent $94.23
nan 7.3.20 T-Mobile $132.42
nan 7.4.20 Venmo -xj8382dzavvd $8.00
nan 7.6.20 Broadway McDonald's $11.73
nan 7.8.20 Break Time - Townsville $44.23
我想维护第二个数据框,它在描述中搜索关键字并填充“类别”列。如下:
df2:
item category
mcdonald fast food
state farm insurance
break time gas
chipotle fast food
mobile cell phone
这里的想法是,我将编写代码行来搜索 df1['Description'] 中的部分字符串,并使用 df2[category] 中的值填充 df1['Category']。
我确信有一种干净且 Pythonic 的方式来处理这段代码,但下面是我能得到的最接近的方式。下面代码的错误结果是,df1['Category'] 中包含匹配项的所有行都设置为 df2 中的最后一个循环(例如,在这种情况下,所有行都将设置为“手机”)。
for x in df2['item']:
for y in df2['category']:
df1['Category'] = np.where(
df1['Description'].str.lower().str.contains(x),
y,
df1['Category'])
感谢您的帮助!
【问题讨论】:
-
如果我的解决方案对您有用,如果您将其标记为已接受的答案,我将不胜感激。如果它对您不起作用,请加入 cmets,我会帮助您到达您需要去的地方。