[英]How to add extra column with values based on previous rows in Pandas data frame?
我有這個數據框:
'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.eq
( ==
)與條件不匹配,請使用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
您也可以嘗試以下操作:
df['C3']=df['C2'].astype(str).str[0]
print(df)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.