Python中如何批量筛选DataFrame同前缀行及简化标记列代码?
问题解答
一、简洁创建'Declined Or Hired'列
你原来的代码需要逐个枚举所有符合条件的完整字符串,确实繁琐。用str.startswith()方法直接判断字符串开头,一行代码就能搞定:
df['Declined Or Hired'] = df['(Declined - Reason) Or Hire'].str.startswith("Offer Declined -").astype(str)
如果需要给不符合条件的行设置默认值(比如空字符串或0),可以用numpy.where:
import numpy as np df['Declined Or Hired'] = np.where(df['(Declined - Reason) Or Hire'].str.startswith("Offer Declined -"), '1', '')
这种写法不用罗列所有后缀,后续新增以"Offer Declined -"开头的子项时,代码也不用修改,扩展性更强。
二、筛选以指定短语开头的行
同样用str.startswith()做筛选条件,无需逐个指定行:
filtered_df = df[df['(Declined - Reason) Or Hire'].str.startswith("Offer Declined -")]
如果想避免链式赋值警告,用loc写法更严谨:
filtered_df = df.loc[df['(Declined - Reason) Or Hire'].str.startswith("Offer Declined -"), :]
这样就能直接得到所有符合开头条件的行数据。
你原来的实现代码:
df.loc[(df['(Declined - Reason) Or Hire'] == 'Offer Declined - Accepted Another Offer') | (df['(Declined - Reason) Or Hire'] == 'Offer Declined - Company'), 'Declined Or Hired'] ='1'
内容的提问来源于stack exchange,提问作者Jed
相关产品推荐
相关产品推荐

