python - 如果 python pandas 中存在条件,如何用前一列值设置或替换行值

标签 python pandas replace

我正在尝试解决与在某些条件下用前一个值设置或替换行中的值相关的问题。数据如下:

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] 

最佳答案

使用maskneffill:

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/

相关文章:

python - 使用 PRAW 在标题返回中获取 & 而不是 &

python - 按开始/结束时间戳对数据帧行进行分组

javascript - 如何在文本 block 中查找和替换字符串?

jquery - 使用 jQuery 更改背景图像的值

java - 替换不是替换java中的双引号

Python Pandas - 查找并分组异常值

python - 使用从评估函数返回的值从极大极小寻找合适的移动

python - 我正在尝试在 python 中近似 2 的平方根

python - 将数据框中的对象(时间)类型列转换为日期时间

python - HDFStore 获取列名称