用多个值填充多个列的缺失值

2024-09-28 16:20:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经浏览过类似于一次性为pandas填写多个列的帖子,但是我这里的问题似乎有点不同,在某种意义上,我需要能够用特定的列值填充缺失的列值,并且能够一次性地为多个列执行此操作。

我可以单独使用下面的命令来填充NA

result1_copy['BASE_B'] = np.where(pd.isnull(result1_copy['BASE_B']), result1_copy['BASE_S'], result1_copy['BASE_B'])

result1_copy['QWE_B'] = np.where(pd.isnull(result1_copy['QWE_B']), result1_copy['QWE_S'], result1_copy['QWE_B'])

但是,如果我尝试一次性填充它,它将不起作用:

^{pr2}$

我们知道为什么吗? 请注意,为了方便起见,我只使用了2列,但是我有10列要插补。它们要么是object,float或者datetime。 数据类型是问题所在吗?


Tags: 命令pandasbaseobjectnpwhere帖子pd
1条回答
网友
1楼 · 发布于 2024-09-28 16:20:28

您需要为筛选的数据帧添加[],并为对齐列添加rename

d = {'BASE_S':'BASE_B', 'QWE_S':'QWE_B'}
result1_copy[['BASE_B','QWE_B']] = result1_copy[['BASE_B', 'QWE_B']]
                                     .fillna(result1_copy[['BASE_S','QWE_S']]
                                     .rename(columns=d))

更具活力的解决方案:

^{pr2}$

如果将列与BS匹配,则另一种解决方案:

for x in ['BASE_','QWE_']:
    result1_copy[x + 'B'] = result1_copy[x + 'B'].fillna(result1_copy[x + 'S'])

样本

^{4}$

相关问题 更多 >