gpt4 book ai didi

python - Pandas 在Where 子句中组合条件时出错

转载 作者:太空宇宙 更新时间:2023-11-03 14:00:15 24 4
gpt4 key购买 nike

我有一个包含二进制标志值的列,如果有错误,我会尝试清理它。如果某个特定组同时包含 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第 n 个:

df.groupby('CombBitSeq')['Flag'].transform('head', 1)

你的情况现在变成:

g = df.groupby('CombBitSeq')['Flag']    # let's compute this only once
df['Flag'] = np.where(
g.transform('std').ne(0) & g.transform('head', 1).ne(1), 0, df['Flag']
)

关于python - Pandas 在Where 子句中组合条件时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49301479/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com