如何用Pandas填充Excel中仅首行有值的类别与子类别的缺失值?
Pandas填充Excel类别/子类别缺失值的高效方案
不用写for循环,Pandas内置的ffill()(向前填充)方法就是最优解——它专门处理这种"首行有值、后续行缺失"的场景,而且是矢量化操作,比逐行循环快几个数量级,尤其是数据量大的时候。
具体步骤与代码示例
- 读取目标Excel文件
- 对
类别和子类别列应用ffill(),自动用前一行的有效值填充当前行的缺失值 - 可选:如果第一行存在缺失值,可搭配
bfill()从后往前补一次 - 导出清理后的数据
import pandas as pd # 读取Excel数据 df = pd.read_excel("your_input_file.xlsx") # 填充类别和子类别列的缺失值 df["类别"] = df["类别"].ffill() df["子类别"] = df["子类别"].ffill() # (可选)处理第一行可能的缺失值(如果存在的话) # df[["类别", "子类别"]] = df[["类别", "子类别"]].bfill() # 保存清理后的文件 df.to_excel("cleaned_output_file.xlsx", index=False)
为什么比for循环好?
Pandas的ffill()是底层基于C实现的矢量化操作,不需要逐行遍历数据;而for循环是Python层面的逐行处理,数据量越大,速度差距越明显——比如处理10万行数据,ffill()可能只需要几毫秒,循环要好几秒甚至更久。
适用场景说明
这种方法完美适配你的场景:当新的类别/子类别出现时,首行的有效值会成为后续行的填充值,直到下一个新的有效值出现,完全符合Excel中这类分组数据的格式逻辑。
内容的提问来源于stack exchange,提问作者Terry Morin
相关产品推荐
相关产品推荐

