2017-05-04 162 views
0

这里是我的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中的所有列都是对象数据类型。

这里是回溯 enter image description here

+5

请包括完整的错误追溯。 –

+3

当您问到这个问题时,您是否从所有问题中得到了与所提出的相同标题的解答? –

+2

“logic_tbl [0]”和“logic_tbl [1]”的类型是什么?你可以在函数调用 – kuro

回答

0

得到这个更正!

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’是一个字符串没有过滤”。

-1

试着写这一句类似下面的代码:

filt = numpy.array[a==logic_value for a in logic_col] 
mems = [i for indx,i in enumerate(logic_col) if filt[indx] == True] 

工作的呢?

+0

我确实试过,但没有工作!显示相同的错误! – subro

+0

刚刚编辑答案..请尝试? – Aman

+0

如果这样做不起作用...那么请尝试以下操作: filt = numpy.array [a逻辑_col中的a逻辑值]; mems = [我为indx,我在枚举(logic_col)如果filt [indx] == True] – Aman

相关问题