gpt4 book ai didi

python - df.loc 中的按位条件未给出预期结果

转载 作者:太空宇宙 更新时间:2023-11-03 21:18:18 25 4
gpt4 key购买 nike

我编写了以下代码:

df.loc[((df['col_A'] == False) & (df['loc_B'] == False)), 'col_C'] = "abc"

但是“abc”会写入 col_C 的所有值,而不是条件中指定的值。这是为什么?

编辑:

我的列是对象/字符串,因此我尝试使用以下函数转换它们:

def str_to_bool(s):
if s == 'True':
return True
elif s == 'False':
return False

但它会引发以下错误:

"The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all()".

最佳答案

首先将您的系列转换为 bool 值,例如通过pd.DataFrame.apply:

cols = ['col_A', 'col_B']
df[cols] = df[cols].apply(lambda x: x.eq('True'))

然后应用您的逻辑,注意 ~ 可用于否定一系列:

df.loc[~df['col_A'] & ~df['col_B'], 'col_C'] = "abc"

或者根据德摩根定律:

df.loc[~(df['col_A'] | df['col_B']), 'col_C'] = "abc"

关于python - df.loc 中的按位条件未给出预期结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54522444/

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