【发布时间】:2019-05-02 09:26:00
【问题描述】:
我有一个下面的伪代码,我需要使用 pandas 编写。
if group_min_size && group_max_size
if group_min_size == 0 && group_max_size > 0
if group_max_size >= 2
errors.add(:group_min_size, "must be greater than or equal to 2 and less than or equal to group_max_size (#{group_max_size})")
end
if group_max_size < 2
errors.add(:group_min_size, "must be greater than 2")
errors.add(:group_max_size, "must be greater than 2")
end
end
if group_min_size > 0 && group_max_size == 0
if group_min_size >= 2
errors.add(:group_max_size, "must be greater than or equal to #{group_min_size}")
end
if group_min_size < 2
errors.add(:group_min_size, "must be greater than 2")
errors.add(:group_max_size, "must be greater than 2")
end
end
end
我试图分解成更小的部分并写下类似下面的内容-
m8 = ((~df['group_min_size'].notna() & ~df['group_min_size'].notna()) | ((~df['group_min_size'] == 0) & (~df['group_max_size'] > 2)) | (df['group_max_size'] >= 2))
这是给
if group_min_size == 0 && group_max_size > 0
if group_max_size >= 2
errors.add(:group_min_size, "must be greater than or equal to 2 and less than or equal to group_max_size (#{group_max_size})")
end
但没有按预期工作。
下面是我的测试数据——
group_min_size group_max_size
0 0.0 1.0
1 10.0 20.0
2 0.0 3.0
3 3.0 0.0
4 NaN NaN
5 2.0 2.0
6 2.0 2.0
7 2.0 2.0
8 2.0 2.0
根据伪代码逻辑,输出应该是:
False
True
False
False
True
True
True
True
True
如何在 pandas 中编写这个逻辑?
【问题讨论】:
-
@MohamedThasinah 我已经提到了我尝试过的内容。打破不同的 ifs 。并提供了代码实现
-
第四个也是真的