gpt4 book ai didi

python - np.logical_and 三个测试

转载 作者:太空宇宙 更新时间:2023-11-04 09:37:01 25 4
gpt4 key购买 nike

我正在尝试根据三列(3 次测试)中值的测试和结果更新数据框中的一列。

一些示例代码:

df_test = pd.DataFrame([('?',2.0,1,0,0,0), (None,2.0,1,0,0,0), 
(None,2.0,0,0,0,0),(None,2.0,0,1,0,0),
('?',2.0,0,0,0,0)], columns=['a','b','c','d','e','f'])
df_test.head()

当我尝试以下 df_test['g'] = np.where(np.logical_and(df_test['a'] != 'None', df_test['c'] == 0, df_test[ 'd'] == 0), True, False).astype(int)我收到错误 TypeError: return arrays must be of ArrayType 所以我尝试以下操作:

df_test = pd.DataFrame([('?',2.0,1,0,0,0), (None,2.0,1,0,0,0), 
(None,2.0,0,0,0,0),(None,2.0,0,1,0,0),
('?',2.0,0,0,0,0)], columns=['a','b','c','d','e','f'])
df_test['g'] = np.where(np.logical_and(df_test['a'] != None,
np.logical_and(df_test['c'] == 0,
df_test['d'] == 0)),
True, False).astype(int)
df_test.head()

在第 2 行,我希望看到 0 的地方我看到了 1,而第 4 行看起来是正确的。测试 1 (a) 应为 False,而第二个 (c) 和第三个 (d) 测试应为 True,True。假 == 真 == 真即假。

    a   b   c   d   e   f   g
0 ? 2.0 1 0 0 0 0
1 None 2.0 1 0 0 0 0
2 None 2.0 0 0 0 0 1
3 None 2.0 0 1 0 0 0
4 ? 2.0 0 0 0 0 1

我需要一种方法来评估 3 个测试并将 true 或 false 作为 int 返回。

最佳答案

对于 3 个或更多条件,使用 np.logical_and.reduce 并传递掩码列表;

mask = np.logical_and.reduce([
df_test['a'].notna(), df_test['c'].eq(0), df_test['d'].eq(0)])
df_test['g'] = mask.astype(int)

print(df_test)
a b c d e f g
0 ? 2.0 1 0 0 0 0
1 None 2.0 1 0 0 0 0
2 None 2.0 0 0 0 0 0
3 None 2.0 0 1 0 0 0
4 ? 2.0 0 0 0 0 1

后面的np.where在这里是多余的。

关于python - np.logical_and 三个测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53266807/

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