多个列表中的位置比较

时间:2019-10-02 19:07:16

标签: python pandas

尝试创建依赖于上一个列表的多个列表。

例如,列表1将读取特定文件,并根据比较结果返回数字或布尔值false。

然后,第二个列表将比较与前一个列表中相同位置处出现的数字(如果前一个列表中的值不是false),并根据与第一个列表相同的比较返回值或false

我创建了执行这些比较并创建列表的函数

def generic_state_machine(file,obs_nums):
    return file.ix[:,0][obs_nums] if file.ix[:,0][obs_nums] > 0.2 else False

注意:obs_nums会查看项目在列表中的位置

然后我创建了查看不同文件的列表

session_to_leads = []
lead_to_opps = []

for i in range(1,len(a)):
     session_to_leads.append(generic_state_machine(file=a,obs_nums=i))
     lead_to_opps.append(generic_state_machine(file=b,obs_nums=i)) if session_to_leads != False else lead_to_opps.append(False)

给出

a = pd.DataFrame([0,0.9,0.6,0.7,0.8])
b = pd.DataFrame([0.7,0.51,0.3,0.7,0.2])

我设法解决了遇到的初始错误,现在唯一的问题是,lead_to_opps列表不依赖于session_to_leads,因此,如果位置1中有False值,lead_to_opps不会在同一位置自动返回False。因此,假设random.uniform(0,1)始终生成0.5,这就是我当前的结果:

session_to_leads = [False,0.9,0.6,0.7,0.8]
lead_to_opps = [0.7,0.51,False,0.7,False]

我想要的结果将是

session_to_leads = [False,0.9,0.6,0.7,0.8]
lead_to_opps = [False,0.51,False,0.7,False]           

2 个答案:

答案 0 :(得分:0)

“在处理上述异常期间,发生了另一个异常:”

这不是错误,基本上是“基于先前的错误,发生了此新错误。

请在此错误之前发布错误,这将有很大帮助。 另外,我没有得到什么[obs_nums]

答案 1 :(得分:0)

看起来

file.ix[:, 1][obs_nums]

是问题所在,假设.ix的行为类似于.loc(似乎已弃用.ix)

>>> help(pd.Dataframe.loc)

Allowed inputs are...

- A slice object with labels, e.g. 'a':'f'

warning:: Note that contrary to usual python slices, 
**both** the start and the stop are included

遵循索引有点困难,但是您是否需要切片?只是:

file.loc[obs_nums]

返回您要查找的数字或布尔值?