如何插入基于前一行的虚拟行,使Pandas数据框列值连续递增
补全Pandas数据中缺失的连续行(基于前一行填充)
要实现补全v1列的连续值,并将缺失行的v2值用前一行的值填充,可按以下步骤操作:
生成完整的连续
v1序列
先获取原数据中v1的最小和最大值,创建一个包含所有连续整数的DataFrame,确保没有遗漏值。合并数据并前向填充缺失值
将原数据与完整序列左连接,用前向填充(ffill())补全v2列的缺失值,最后整理索引。
完整代码示例:
import pandas as pd data = [ [1,'A'], [2,'B'], [3,'C'], [4,'D'], [5,'E'], [7,'G'], [9,'H'], [10,'I'] ] df = pd.DataFrame(data, columns=['v1','v2']) # 生成完整的v1连续序列 full_v1 = pd.DataFrame({'v1': pd.RangeIndex(start=df['v1'].min(), stop=df['v1'].max()+1)}) # 合并并前向填充 result_df = full_v1.merge(df, on='v1', how='left').ffill().reset_index(drop=True) print(result_df)
运行后输出结果:
v1 v2 0 1 A 1 2 B 2 3 C 3 4 D 4 5 E 5 6 E 6 7 G 7 8 G 8 9 H 9 10 I
可以看到,缺失的v1=6和v1=8都被补全,对应的v2值分别沿用了前一行的E和G,符合需求。
内容的提问来源于stack exchange,提问作者lucky1928
相关产品推荐
相关产品推荐

