[英]How to replace a value in a row with the previous row based on a condition in python?
I have a data table:我有一个数据表:
Index Value
0 NaN
1 1.15
2 2.25
3 2.33
Condition: First check wherever previous row value is not NaN then replace current row value with previous row value.条件:首先检查前一行值不是 NaN 的位置,然后将当前行值替换为前一行值。
Desired output:所需的 output:
Index Value
0 NaN
1 1.15
2 1.15
3 1.15
Compare values for missing values, then get first consecutive value and replace another by DataFrame.where
, forward filling missing values and last replace original missing values:比较缺失值的值,然后获取第一个连续值并用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
Details :详情:
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.