为了账号安全,请及时绑定邮箱和手机立即绑定

如何根据多个条件确定行中的值是否有效?

如何根据多个条件确定行中的值是否有效?

素胚勾勒不出你 2023-06-20 10:15:35
我在数据框中有一些数据,想检查Year是否有效,如果存在于 start_year 和 end_year 之间Year      start_year      end_year    2010        2012            20142013        2012            20152015        2015            20162009        2010            20122017        2016            2019我想再添加一列(有效/无效)来指定年份是否有效Year      start_year      end_year     valid/invalid 2010        2012            2014         invalid2013        2012            2015         valid 2015        2015            2016         valid2009        2010            2012         invalid 2017        2016            2019         valid 我们如何使用 python 实现这一目标?
查看完整描述

3 回答

?
DIEA

TA贡献1820条经验 获得超2个赞

你可以np.where使用Series.between

df["valid/invalid"] = np.where(df.Year.between(df.start_year,df.end_year),'valid','invalid')

df

   Year  start_year  end_year valid/invalid

0  2010        2012      2014       invalid

1  2013        2012      2015         valid

2  2015        2015      2016         valid

3  2009        2010      2012       invalid

4  2017        2016      2019         valid


查看完整回答
反对 回复 2023-06-20
?
缥缈止盈

TA贡献2041条经验 获得超4个赞

如果您想坚持只使用 Pandas,请尝试使用以下解决apply方案replace-


df['valid/invalid'] = df.apply(lambda x: (x.Year>=x.start_year) and (x.Year<=x.end_year), axis=1).replace({True:'Valid',False:'Invalid'})

   Year  start_year  end_year valid/invalid

0  2010        2012      2014       Invalid

1  2013        2012      2015         Valid

2  2015        2015      2016         Valid

3  2009        2010      2012       Invalid

4  2017        2016      2019         Valid

apply如果年份介于开始年份和结束年份之间(包括两端),第一步会让您判断为真或假。第二步将Trueand替换False为ValidorInvalid字符串。


查看完整回答
反对 回复 2023-06-20
?
手掌心

TA贡献1942条经验 获得超3个赞

查看np.where


df['v/inv'] = np.where((df.Year>=df.start_year) & (df.Year<=df.end_year), 'valid','invalid')

df

Out[360]: 

   Year  start_year  end_year    v/inv

0  2010        2012      2014  invalid

1  2013        2012      2015    valid

2  2015        2015      2016    valid

3  2009        2010      2012  invalid

4  2017        2016      2019    valid


查看完整回答
反对 回复 2023-06-20
  • 3 回答
  • 0 关注
  • 124 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信