如何基于Column_A筛选后填充NaN值:abc补team 1,def补team 2
解决方案
原始数据
| Column_A | Column_B |
|---|---|
| abc | team 1 |
| def | team 5 |
| def | team 5 |
| def | NaN |
| abc | team 1 |
| abc | NaN |
实现步骤(使用Pandas)
以下是两种简洁的实现方式,均能满足先按Column_A筛选、再按规则填充Column_B空值的需求:
方法1:通过loc定位条件行填充
import pandas as pd import numpy as np # 构造原始数据 data = { 'Column_A': ['abc', 'def', 'def', 'def', 'abc', 'abc'], 'Column_B': ['team 1', 'team 5', 'team 5', np.nan, 'team 1', np.nan] } df = pd.DataFrame(data) # 按规则填充NaN值 df.loc[(df['Column_A'] == 'abc') & (df['Column_B'].isna()), 'Column_B'] = 'team 1' df.loc[(df['Column_A'] == 'def') & (df['Column_B'].isna()), 'Column_B'] = 'team 2'
方法2:使用np.where批量逻辑处理
import pandas as pd import numpy as np df = pd.DataFrame(data) # 嵌套条件判断填充 df['Column_B'] = np.where( (df['Column_A'] == 'abc') & (df['Column_B'].isna()), 'team 1', np.where( (df['Column_A'] == 'def') & (df['Column_B'].isna()), 'team 2', df['Column_B'] ) )
处理后结果
| Column_A | Column_B |
|---|---|
| abc | team 1 |
| def | team 5 |
| def | team 5 |
| def | team 2 |
| abc | team 1 |
| abc | team 1 |
内容的提问来源于stack exchange,提问作者Pirate_King_Luffy_27
相关产品推荐
相关产品推荐

