3 回答

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超3個(gè)贊
你可以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貢獻(xiàn)2041條經(jīng)驗(yàn) 獲得超4個(gè)贊
如果您想堅(jiān)持只使用 Pandas,請(qǐng)嘗試使用以下解決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如果年份介于開(kāi)始年份和結(jié)束年份之間(包括兩端),第一步會(huì)讓您判斷為真或假。第二步將Trueand替換False為ValidorInvalid字符串。

TA貢獻(xiàn)1942條經(jīng)驗(yàn) 獲得超3個(gè)贊
查看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
添加回答
舉報(bào)