TypeError:字符串索引必须是整数,而不是python中的str

时间:2017-05-04 12:12:17

标签: python

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

HEre是Traceback enter image description here

2 个答案:

答案 0 :(得分:0)

更正了!

Logic_tbl包含pandas dataframe的名称

Logic_col包含pandas dataframe

中列名的名称

logic_value包含logic_tbl数据帧中logic_col变量中行的值。

mems = logic_tbl[logic_tbl[logic_col]==logic_value]['mbr_id'].tolist()

我上面尝试过,但是python将logic_tbl视为字符串,而不是做任何pandas数据帧级操作。

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 :(得分:-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]

这有用吗?