猿问

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

我在数据框中有一些数据,想检查Year是否有效,如果存在于 start_year 和 end_year 之间


Year      start_year      end_year    

2010        2012            2014

2013        2012            2015

2015        2015            2016

2009        2010            2012

2017        2016            2019

我想再添加一列(有效/无效)来指定年份是否有效


Year      start_year      end_year     valid/invalid 

2010        2012            2014         invalid

2013        2012            2015         valid 

2015        2015            2016         valid

2009        2010            2012         invalid 

2017        2016            2019         valid 

我们如何使用 python 实现这一目标?


素胚勾勒不出你
浏览 125回答 3
3回答

DIEA

你可以np.where使用Series.betweendf["valid/invalid"] = np.where(df.Year.between(df.start_year,df.end_year),'valid','invalid')df   Year  start_year  end_year valid/invalid0  2010        2012      2014       invalid1  2013        2012      2015         valid2  2015        2015      2016         valid3  2009        2010      2012       invalid4  2017        2016      2019         valid

缥缈止盈

如果您想坚持只使用 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'})&nbsp; &nbsp;Year&nbsp; start_year&nbsp; end_year valid/invalid0&nbsp; 2010&nbsp; &nbsp; &nbsp; &nbsp; 2012&nbsp; &nbsp; &nbsp; 2014&nbsp; &nbsp; &nbsp; &nbsp;Invalid1&nbsp; 2013&nbsp; &nbsp; &nbsp; &nbsp; 2012&nbsp; &nbsp; &nbsp; 2015&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Valid2&nbsp; 2015&nbsp; &nbsp; &nbsp; &nbsp; 2015&nbsp; &nbsp; &nbsp; 2016&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Valid3&nbsp; 2009&nbsp; &nbsp; &nbsp; &nbsp; 2010&nbsp; &nbsp; &nbsp; 2012&nbsp; &nbsp; &nbsp; &nbsp;Invalid4&nbsp; 2017&nbsp; &nbsp; &nbsp; &nbsp; 2016&nbsp; &nbsp; &nbsp; 2019&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Validapply如果年份介于开始年份和结束年份之间(包括两端),第一步会让您判断为真或假。第二步将Trueand替换False为ValidorInvalid字符串。

手掌心

查看np.wheredf['v/inv'] = np.where((df.Year>=df.start_year) & (df.Year<=df.end_year), 'valid','invalid')dfOut[360]:&nbsp;&nbsp; &nbsp;Year&nbsp; start_year&nbsp; end_year&nbsp; &nbsp; v/inv0&nbsp; 2010&nbsp; &nbsp; &nbsp; &nbsp; 2012&nbsp; &nbsp; &nbsp; 2014&nbsp; invalid1&nbsp; 2013&nbsp; &nbsp; &nbsp; &nbsp; 2012&nbsp; &nbsp; &nbsp; 2015&nbsp; &nbsp; valid2&nbsp; 2015&nbsp; &nbsp; &nbsp; &nbsp; 2015&nbsp; &nbsp; &nbsp; 2016&nbsp; &nbsp; valid3&nbsp; 2009&nbsp; &nbsp; &nbsp; &nbsp; 2010&nbsp; &nbsp; &nbsp; 2012&nbsp; invalid4&nbsp; 2017&nbsp; &nbsp; &nbsp; &nbsp; 2016&nbsp; &nbsp; &nbsp; 2019&nbsp; &nbsp; valid
随时随地看视频慕课网APP

相关分类

Python
我要回答