python – 如何根据条件更改pandas系列中的值
发布时间:2020-12-20 11:08:12 所属栏目:Python 来源:网络整理
导读:我有一个只有二进制值的熊猫系列 00 11 02 03 04 15 06 17 08 09 110 011 112 013 114 0 我想隐藏系列中的值,它是零,并且它周围有一个,即基本上改变1,1到1,1,1. 我需要的输出是: 0 11 02 03 04 15 16 17 08 09 110 111 112 113 114 0 我在这里尝试的是创建
我有一个只有二进制值的熊猫系列
0 0 1 1 0 2 0 3 0 4 1 5 0 6 1 7 0 8 0 9 1 10 0 11 1 12 0 13 1 14 0 我想隐藏系列中的值,它是零,并且它周围有一个,即基本上改变1,1到1,1,1. 我需要的输出是: 0 1 1 0 2 0 3 0 4 1 5 1 6 1 7 0 8 0 9 1 10 1 11 1 12 1 13 1 14 0 我在这里尝试的是创建一个3的滚动窗口,并检查值是否是我需要的.有没有更好的方法来做这个? >>> window = df.rolling(3,center=True) >>> (df[0] | window.apply(lambda x: 1 if (x == [1,1]).all() else 0)[0].fillna(0)).astype(int) 注意:我也试过了换档功能. 解决方法
使用
shift 表示布尔掩码,并按
numpy.where 设置1:
m1 = df[0].shift() == 1 m2 = df[0].shift(-1) == 1 m3 = df[0] == 0 df[0] = np.where(m1 & m2 & m3,df[0]) print (df) 0 0 1 1 0 2 0 3 0 4 1 5 1 6 1 7 0 8 0 9 1 10 1 11 1 12 1 13 1 14 0 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |