如何根据python中的条件用前一行替换行中的值?
我有一个数据表:如何根据python中的条件用前一行替换行中的值?,python,pandas,numpy,dataframe,Python,Pandas,Numpy,Dataframe,我有一个数据表: Index Value 0 NaN 1 1.15 2 2.25 3 2.33 条件:首先检查上一行值不为NaN的位置,然后用上一行值替换当前行值 期望输出: Index Value 0 NaN 1 1.15 2 1.15 3 1.15 比较缺失值的值,然后获取第一个连续值并替换另一个,向前填充缺失值,最后替换原始缺失值: df = pd.DataFrame({'Value':[n
Index Value
0 NaN
1 1.15
2 2.25
3 2.33
条件:首先检查上一行值不为NaN的位置,然后用上一行值替换当前行值
期望输出:
Index Value
0 NaN
1 1.15
2 1.15
3 1.15
比较缺失值的值,然后获取第一个连续值并替换另一个,向前填充缺失值,最后替换原始缺失值:
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
纯代码编写请求与堆栈溢出无关-我们希望这里的问题与特定的编程问题相关-但我们很乐意帮助您自己编写!告诉我们,你被困在哪里了。这也将帮助我们更好地回答您的问题。当
df
是pd.DataFrame({'Value':[np.nan,1.15,2.15,3.15,np.nan,2.1,2.2,2.3]}
时,预期的输出是nan 1.15 1.15 1.15 nan 2.1 2.1
,但这会给出nan 1.15 1.15 1.15 1.15…
全部1。15@jezrael谢谢如果你能解释一下,那也太好了。@jezrael最酷的回答+1 ;)@jezrael还有一个问题,我有一个dataframe pd.dataframe({“值:[np.nan,1,5,np.nan,6,-1,5,np.nan,6]}),这里的逻辑应该在每-1之后重置,所以期望的输出是nan 1.51.56-15