Pandas:基于同ID其他行值为指定行单元格赋值
解决方案:基于ID分组处理bad_loan字段
实现思路&代码
核心是通过分组标记+布尔索引完成批量修改:
- 按
ID分组,标记每个组内是否存在bad_loan=True的记录 - 定位同时满足「bad_loan为NaN」和「所在组存在True」的行,将其
bad_loan设为True
代码示例:
import pandas as pd import numpy as np # 示例DataFrame df = pd.DataFrame({ 'ID': ['123', '123', '456', '456', '789'], 'bad_loan': [True, np.nan, np.nan, False, np.nan] }) # 生成每组是否存在bad_loan=True的标记列 has_true = df.groupby('ID')['bad_loan'].transform('any') # 批量修改符合条件的行 df.loc[df['bad_loan'].isna() & has_true, 'bad_loan'] = True
结果说明
处理后示例DataFrame的bad_loan列会变为:
| ID | bad_loan |
|---|---|
| 123 | True |
| 123 | True |
| 456 | NaN |
| 456 | False |
| 789 | NaN |
- ID123组存在True,所以对应NaN被改为True
- ID456组无True,NaN保持不变
- ID789组无True,NaN保持不变
内容的提问来源于stack exchange,提问作者Jasmine N
相关产品推荐
相关产品推荐

