如何将pandas DataFrame的Total列值拆分填充到另外两列的空值位置
pandas空值填充实现方案
你可以通过筛选Male和Female列同时为空的行,将对应行的Total值对半拆分后填充即可,原有数据不会被修改,具体实现步骤如下:
1. 测试数据构造
import pandas as pd import numpy as np df = pd.DataFrame({ 'Total': [24, 45, 36, 50], 'Male': [np.nan, 21, np.nan, np.nan], 'Female': [np.nan, 24, np.nan, np.nan] })
2. 核心填充逻辑
# 匹配两列同时为空的行 empty_mask = df['Male'].isna() & df['Female'].isna() # 对半拆分Total值填充空值 df.loc[empty_mask, 'Male'] = df.loc[empty_mask, 'Total'] / 2 df.loc[empty_mask, 'Female'] = df.loc[empty_mask, 'Total'] / 2 # 可选:若需要保证结果为整数,可添加类型转换 df[['Male', 'Female']] = df[['Male', 'Female']].astype(int)
3. 运行结果
| Total | Male | Female |
|---|---|---|
| 24 | 12 | 12 |
| 45 | 21 | 24 |
| 36 | 18 | 18 |
| 50 | 25 | 25 |
内容的提问来源于stack exchange,提问作者tress
相关产品推荐
相关产品推荐

