首页 > 解决方案 > 如何根据python中的前一行值编辑现有行值

问题描述

我有一个数据集如下:

date time value
20141102 1420 0
20141102 1425 2
20141103 1430 N/A
20141103 1435 N/A
20141104 1440 2
20141104 1445 N/A
20141105 1450 N/A
20141105 1455 2

但我想编辑列值。1. 如果前一个值为 N/A,我希望该值为 0 而不是 2。所需的输出应该是这样的:

 date time value
 20141102 1420 0
 20141102 1425 2
 20141103 1430 N/A
 20141103 1435 N/A
 20141104 1440 0
 20141104 1445 N/A
 20141105 1450 N/A
 20141105 1455 0

标签: python-3.xpandas

解决方案


np.where+shift

df['value']=np.where(df.value.isnull().shift()&df.value.eq(2),0,df.value)
df
Out[593]: 
       date  time  value
0  20141102  1420    0.0
1  20141102  1425    2.0
2  20141103  1430    NaN
3  20141103  1435    NaN
4  20141104  1440    0.0
5  20141104  1445    NaN
6  20141105  1450    NaN
7  20141105  1455    0.0

推荐阅读