Pandas如何仅删除值为NaN的单个单元格而非整行或整列
需求可行性
该需求完全可以实现,你的需求本质是对每一列独立移除NaN值后,将剩余的有效值按原有顺序对齐到列的顶部,多余行自动补NaN(如果有效值数量和总行数一致则完全填满整列,和你给出的示例效果一致)。
实现代码
import pandas as pd import numpy as np # 这里替换成你自己的原始DataFrame即可,下方是模拟你场景的示例构造代码 df = pd.DataFrame({ 'Column1': range(1, 23), 'Column2': [np.nan]*11 + list(range(1, 13)), 'Column3': [np.nan]*20 + list(range(1, 3)) }) # 核心处理逻辑 df_result = df.apply(lambda col: pd.Series(col.dropna().values), axis=0) # 可选:如果需要保留原始DataFrame的索引,添加下面这行 df_result.index = df.index
逻辑说明
- 用
apply方法设置axis=0按列遍历整个DataFrame - 对每一列单独调用
dropna()移除所有NaN单元格,保留原始数值的先后顺序 - 将清理后的有效值重新封装为Series,pandas会自动从第一行开始依次填充,没有有效值的位置默认补NaN
- 如果需要替换末尾的空值,可后续调用
fillna()方法自定义填充规则
内容的提问来源于stack exchange,提问作者sanster9292
相关产品推荐
相关产品推荐

