pandas orders.apply(lambda row: xxxx,axis=1)

"'Series' object has no attribute 'gender'", u'occurred at index id')

这一类的报错都是因为没有axis=1



import pandas as pd

df = pd.DataFrame([
  ['JOHN SMITH', 'Male'],
  ['Jane Doe', 'Female'],
  ['joe schmo', 'Female']
],
columns=['last_name', 'gender'])

df['salutation']=df.apply(lambda row:'Dear Mr. %s'%row.last_name if row.gender=='Male' else'Dear Ms. %s'%row.last_name,axis=1)

print(df)

输出:

    last_name  gender           salutation
0  JOHN SMITH    Male  Dear Mr. JOHN SMITH
1    Jane Doe  Female    Dear Ms. Jane Doe
2   joe schmo  Female   Dear Ms. joe schmo

you also can use:

orders['salutation']=orders.apply(lambda row:'Dear %s %s'%('Mr.' if row.gender=='Male' else 'Ms.',row.last_name),axis=1)

or:

mylambda = lambda row: \
  'Dear Mr. {}'.format(row.last_name) \
  if row.gender == 'male' \
  else 'Dear Ms. {}'.format(row.last_name)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值