如何在iloc中使用if语句?Loan_Tenure字段生成及筛选问题求助
解决贷款期限分类与数据筛选问题
1. 自定义函数生成Loan_Tenure字段
先写一个判断期限类别的函数,再用apply方法批量处理Loan_Term列:
def get_loan_tenure(term): if term < 120: return "Short" elif 120 <= term < 300: return "Medium" else: return "Long" # 生成新字段 df_loans['Loan_Tenure'] = df_loans['Loan_Term'].apply(get_loan_tenure)
如果数据量较大,用numpy.select效率更高,写法如下:
import numpy as np conditions = [ df_loans['Loan_Term'] < 120, (df_loans['Loan_Term'] >= 120) & (df_loans['Loan_Term'] < 300), df_loans['Loan_Term'] >= 300 ] choices = ["Short", "Medium", "Long"] df_loans['Loan_Tenure'] = np.select(conditions, choices)
2. 用loc筛选显示指定列
直接用loc指定全部行(用:)和目标列名即可:
# 显示所有行的Loan_Term和Loan_Tenure列 print(df_loans.loc[:, ['Loan_Term', 'Loan_Tenure']])
如果需要同时筛选特定行(比如只看Short期限的记录),可以这么写:
# 只显示Loan_Tenure为Short的行的指定列 print(df_loans.loc[df_loans['Loan_Tenure'] == 'Short', ['Loan_Term', 'Loan_Tenure']])
3. iloc中使用条件判断的方法
iloc是基于位置索引的,不能直接写if语句,得先提取满足条件的行的位置索引,再传入iloc:
# 先获取满足条件的行的位置(比如Loan_Term<120的行) short_term_positions = df_loans[df_loans['Loan_Term'] < 120].index # 用iloc取这些位置的指定列(可通过列名获取位置,避免硬编码) term_col_idx = df_loans.columns.get_loc('Loan_Term') tenure_col_idx = df_loans.columns.get_loc('Loan_Tenure') print(df_loans.iloc[short_term_positions, [term_col_idx, tenure_col_idx]])
内容的提问来源于stack exchange,提问作者bhseah
相关产品推荐
相关产品推荐

