簡體   English   中英

如何基於熊貓數據框中的前一行添加帶有值的額外列?

[英]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.whereSeries.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM