Skip to main content
 首页 » 编程设计

python之如何根据 Pandas 数据框中的前几行添加带有值的额外列

2025年05月04日19JeffreyZhao

我有这个数据框:

'C1'|'C2' 
 0  | x 
 1  | x1 
 1  | x2  
 2  | x3 
 0  | y 
 1  | y1 
 2  | y2 
 0  | z 
 1  | z1 

我需要像这样创建一个额外的列:

'C1'|'C2'|'C3' 
 0  | x  | x 
 1  | x1 | x 
 1  | x2 | x 
 2  | x3 | x 
 0  | y  | y 
 1  | y1 | y 
 2  | y2 | y  
 0  | z  | z 
 1  | z1 | z 

基本上,当我在 C1 列中找到 0 时,我必须将 C2 列中的相应值放入所有子行(直到下一个 0)。

我是 Pandas 的新手,我读到我应该避免使用迭代操作数据框。

如何在不迭代的情况下得到这个结果?可能吗?

请您参考如下方法:

使用Series.where如果条件与 Series.eq 不匹配,则为缺失值(==) 并通过 ffill 前向填充缺失值:

df['C3'] = df['C2'].where(df['C1'].eq(0)).ffill() 
print (df) 
   C1  C2 C3 
0   0   x  x 
1   1  x1  x 
2   1  x2  x 
3   2  x3  x 
4   0   y  y 
5   1  y1  y 
6   2  y2  y 
7   0   z  z 
8   1  z1  z