我有一个带有二进制标志值的列,如果有错误,我会尝试清除它。如果某个特定组同时具有0和1,则会出现错误。我的规则是此列只能包含组中的0或1。我试图提出一个np.where()子句,这样我就可以测试具有一个重复值的列的组,并且该列在组中的第一个值不是1。如果该组的第一个值不是1,并且存在一个混合值,则将该组中的所有值都翻转为0
以下是我正在尝试的:
df['Flag'] = np.where((df.groupby('CombBitSeq')['Flag'].transform('std') != 0) & (df.groupby('CombBitSeq')['Flag'].nth(0) != 1), 0, df['Flag'])
我得到的错误是这样的,我不确定两个组合条件的长度是怎么偏离1的:
ValueError: operands could not be broadcast together with shapes (336661,) () (336660,)
如果要获取每个组的第一个项并在整个数据帧中转换该项,请使用
groupby
+transform
+head
,而不是nth
:您的状况现在变为:
相关问题 更多 >
编程相关推荐