【发布时间】:2018-03-07 03:02:04
【问题描述】:
尝试创建一个返回 3 或 2 或 1 的查询
表格
ID Field1 Field2
1 J JLP10A
2 J JLP22A
3 S JLP25C
如果 Field1=J 并且 Field2='JLP10' 的前 4 个字母,则返回 3,否则如果 Field1=J 则返回 2,否则返回 1。 所以 ID 1 应该返回 3,ID 2 应该返回 2,ID 3 应该返回 1。
我尝试了以下方法:
Table=Table.assign(Field3=np.where(((Table.Field1=='J')&(Table.Field2.astype(str).str[0:4].isin(['JLP10', 'JLP15']))),3, np.where(Table.Field1=='J'),2,1))))
这不会为 ID1 返回 3..
当我删除 [0:4] 条件并使 Field2 实际匹配时,ID1 得到 3。
Table=Table.assign(Field3=np.where(((Table.Field1=='J')&(Table.Field2.isin(['JLP10A', 'JLP15']))),3, np.where(Table.Field1=='J'),2,1))))
所以代码没有正确读取 0:4.. 任何想法为什么??
【问题讨论】: