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

标签 python pandas

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

相关文章:

python - 使用等于相同 df 和另一个 df 的总和的值更新 pandas 数据框

python - 带参数的 Pandas read_sql

python - 处理 python 数组中的维度崩溃

python - 使用请求模块,如何处理请求响应中的 'set-cookie'?

python - 从资源对象 Azure SDK Python 获取资源组名称

python - 如何在数据框中查找其间带有下划线文本的字符串

python - 从 DataFrame 中删除一列中仅包含一个唯一值的组

python scraping - 如何在 OddsPortal 中的日期之间循环

Python-如何计算列表中出现的次数

python - 值错误 : too many values to unpack when using itertuples() on pandas dataframe