熊猫数据框套用函数给出属性错误(“'str'对象没有属性'str'“,'发生在索引0')

时间:2020-01-21 07:40:47

标签: python pandas

我有一个数据框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方法。

任何线索

0 个答案:

没有答案