Pandas按索引将DataFrame表头单元编号赋值给全表所有行的方法咨询
解决方案
首选方案:前向填充法
你的数据集结构刚好符合前向填充的适用场景:只有分区表头行的UnitNo.列为非空值,后续对应区间均为NaN,直接使用Pandas内置的ffill()方法即可完成全量赋值,一行代码即可实现,适配任意单元数量和数据规模:
df['UnitNo._new_col'] = df['UnitNo.'].ffill()
该方法性能极高,即使是百万行级的大型数据集也可以快速处理,不需要编写任何条件判断语句。
备选方案:按定位的表头索引批量赋值
如果你的UnitNo.列存在意外的非空脏数据,需要严格按照你已经定位到的表头索引区间赋值,可以用这个更可控的方案:
import numpy as np # 初始化新列 df['UnitNo._new_col'] = np.nan # 提取表头索引列表和对应单元号列表 header_idx = Loc.index.tolist() header_unit = Loc['UnitNo.'].tolist() # 遍历所有区间批量赋值 for i in range(len(header_idx)): start = header_idx[i] # 最后一个区间的结束位置为数据集最后一行 end = header_idx[i+1] if i < len(header_idx)-1 else len(df) df.loc[start:end-1, 'UnitNo._new_col'] = header_unit[i]
该方案完全基于你已经筛选出的表头位置赋值,不受其他异常值影响,适配任意单元数量的数据集。
内容的提问来源于stack exchange,提问作者JackMc12345
相关产品推荐
相关产品推荐

