TypeError:字符串索引必须是整数,而不是str中的Python
问题描述:
这里是我的python代码,它在执行时抛出错误。TypeError:字符串索引必须是整数,而不是str中的Python
def split_cell(s):
a = s.split(".")
b = a[1].split("::=")
return (a[0].lower(),b[0].lower(),b[1].lower())
logic_tbl,logic_col,logic_value = split_cell(rules['logic_1'][ith_rule])
mems = logic_tbl[logic_tbl[logic_col]==logic_value]['mbr_id'].tolist()
函数split_cell工作正常,logic_tbl中的所有列都是对象数据类型。
答
得到这个更正!
Logic_tbl包含大熊猫数据帧
Logic_col包含列名的名称在大熊猫数据帧
logic_value包含在数据帧logic_tbl的logic_col可变的行的值的名称。
mems = logic_tbl[logic_tbl[logic_col]==logic_value]['mbr_id'].tolist()
我试图像上面,但是Python治疗logic_tbl字符串,没有做任何的熊猫数据帧级别的操作。
So, I had created a dictionary like this
dt_dict={}
dt_dict['a_med_clm_diag'] = a_med_clm_diag
并作如下修改我的代码,
mems = dt_dict[logic_tbl][dt_dict[logic_tbl][logic_col]==logic_value]['mbr_id'].tolist()
这是按预期工作。我来到这个想法时,我写像,
mems = logic_tbl[logic_tbl[logic_col]==logic_value,'mbr_id']
而且像,这扔消息“‘logic_tbl’是一个字符串没有过滤”。
答
试着写这一句类似下面的代码:
filt = numpy.array[a==logic_value for a in logic_col]
mems = [i for indx,i in enumerate(logic_col) if filt[indx] == True]
工作的呢?
请包括完整的错误追溯。 –
当您问到这个问题时,您是否从所有问题中得到了与所提出的相同标题的解答? –
“logic_tbl [0]”和“logic_tbl [1]”的类型是什么?你可以在函数调用 – kuro