我有一个数据框df
,如下所示:
DESCR Tag
BENOW UPI NET BANKING
BILLDESK(WEBSITE) WEBSITE
CASH CARDS (WEBSITE) CARD
CASH CARDS (WEBSITE)PAYU CARD
CREDIT CARDS PAYMENTS-BILLDESK-OTHERS CARD
CREDIT CARDS PAYMENTS-OWN WEBSITE OWN-WEBSITE
ICICI BANK (WEBSITE) WEBSITE
MOBILE BANKING/CARD PAYMENT
/WALLETS/ATM/PORTAL WALLETS
PAYTM DEBIT CARDCREDIT CARDWALLET WALLETS
PAYTM NETBANKING NET BANKING
PAYTM NETBANKING REL WEBSITE & APP OWN-WEBSITE
PAYU INDIA WALLETS BASE PYT WALLETS
我正在尝试apply
在另一个数据框df_1
上使用某个函数,如果以下所述的任何关键字与列DESCR
匹配,则它将获取相应的{{1} }并将值插入此数据帧Tag
的新创建的列中。
df_1
如下所示:
df_1
结果DESCR Counter Details CA PAYMENT_DATE
PAYU INDIA WALLETS BASE PYT EZ048041017Q 102687926 2017-10-04
ICICI BANK (WEBSITE) EZ048101017C 150650518 2017-10-10
应具有一个附加列df_1
,如下所示:
Grp_Payment
到目前为止,我的方法:
DESCR Counter Details CA PAYMENT_DAT Grp_Payment
PAYU WALLETS BASE PYT EZ048041017Q 102687926 2017-10-04 WALLETS
ICICI BANK (WEBSITE) EZ048101017C 150650518 2017-10-10 NETBANKING
上面的代码给出错误为
def def create_col(row):
if row['DESCR'].str.contains('WEBSITE'):
return 'WEBSITE'
elif row['DESCR'].str.contains('WALLET'):
return 'WALLETS'
elif row['DESCR'].str.contains('UPI|NET BANKING|NETBANKING|ONLINE'):
return 'NETBANKING'
elif row['DESCR'].str.contains('CARDS|INTREX|TECH PROCESS'):
return 'CARD'
else:
return 'AEML-WEBSITE'
df_1['Grp_Payment'] = df_1.apply(create_col,axis=1)
无法找出问题出在哪里。
附注:我知道AttributeError: ("'str' object has no attribute 'str'", 'occurred at index 0')
的速度要快得多,但暂时我只想坚持使用np.where
方法。
任何线索