我正在尝试解决与在某些条件下用前一个值设置或替换行中的值相关的问题。数据如下:
Point_ID [1,2,3,1,2,1], Shape_ID [84,85,86,87,88,89]
我在条件中使用了掩码和移位,如果Point_ID
以1开头,则第二行的Shape_ID
应替换为前一行的值,以防数字增加。如果不是,则 Shape_ID
应保持在一行中。所以我试图获得:
Point_ID[1,2,3,1,2,1], Shape_ID[84,84,84,87,87,89]
最佳答案
使用mask
、ne
和ffill
:
df= pd.DataFrame({'Point_ID':[1,2,3,1,2,1] , 'Shape_ID': [84,85,86,87,88,89]})
print(df)
Point_ID Shape_ID
0 1 84
1 2 85
2 3 86
3 1 87
4 2 88
5 1 89
df.assign(Shape_ID=df['Shape_ID'].mask(df['Point_ID'].ne(1)).ffill().astype(int))
输出:
Point_ID Shape_ID
0 1 84
1 2 84
2 3 84
3 1 87
4 2 87
5 1 89
关于python - 如果 python pandas 中存在条件,如何用前一列值设置或替换行值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45716313/