簡體   English   中英

如何根據 python 中的條件將一行中的值替換為上一行?

[英]How to replace a value in a row with the previous row based on a condition in python?

我有一個數據表:

Index Value

0      NaN

1      1.15

2      2.25

3      2.33

條件:首先檢查前一行值不是 NaN 的位置,然后將當前行值替換為前一行值。

所需的 output:

Index Value

0      NaN

1      1.15

2      1.15

3      1.15

比較缺失值的值,然后獲取第一個連續值並用DataFrame.where替換另一個值,向前填充缺失值並最后替換原始缺失值:

df = pd.DataFrame({'Value':[np.nan,1.15,2.15,3.15,np.nan,2.1,2.2,2.3]})

m = df.notna()
df1 = df.where(m.ne(m.shift())).ffill().where(m)

print (df1)
   Value
0    NaN
1   1.15
2   1.15
3   1.15
4    NaN
5   2.10
6   2.10
7   2.10

詳情

print (m.ne(m.shift()))
  Value
0   True
1   True
2  False
3  False
4   True
5   True
6  False
7  False

print (df.where(m.ne(m.shift())))
 Value
0    NaN
1   1.15
2    NaN
3    NaN
4    NaN
5   2.10
6    NaN
7    NaN

print (df.where(m.ne(m.shift())).ffill())
   Value
0    NaN
1   1.15
2   1.15
3   1.15
4   1.15
5   2.10
6   2.10
7   2.10

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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