我有这个数据框:
'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,就必须将所有子行(直到下一个0)放入C2列中的对应值。
我是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
关于python - 如何基于Pandas数据框中的前一行添加带有值的额外列?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56039301/