3 回答

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

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字符串。

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
添加回答
举报