2014-10-10 67 views
0

我有一个包含许多列的表。我只对两栏感兴趣。让我们称他们为A和B.我想创建一个空列,例如C = []并根据一些条件将值附加到它。根据条件将值附加到空列表

A B 
1 10 
0 11 
0 12 
1 09 
0 14 
0 13 
1 12 

让我们以上表为例。 如果列A == 1中的值随后将A == 1的值添加到列C(空列表)中,直到列A中出现下一个A == 1。对于下一个值1列A,执行上述操作。

所以我希望我的C柱看起来像这样:

A B C 
1 10 10 
0 11 10 
0 12 10 
1 09 09 
0 14 09 
0 13 09 
1 12 12 

因此,大家可以看到,第A == 1,C具有B的为其值A == 1直到出现下一个A == 1。

我是想这样的事情,但它不工作:

for i in A: 
    if i == 1: 
     C.append(B[A==i]) 

但这遍历我的整个A列,并附加许多名单。

我该怎么去做呢?

+0

在'C'应该发生什么,如果'A'用'0'在导致第一排? – CoryKramer 2014-10-10 12:01:43

+0

@Cyber​​我的列A在第一行中的值为1,然后有许多值为1,直到最后一行 – ThePredator 2014-10-10 12:03:20

回答

2
A = [1,0,0,1,0,0,1] 
B = [10,11,12,9,14,13,12] 

C = [] 
temp = B[0] # Initialize a temporary variable to the first item in B 

for i in range(len(B)): 
    if A[i] == 1: 
     temp = B[i] # Only update temp if 1 was in the A column 
    C.append(temp) 

>>> C 
[10, 10, 10, 9, 9, 9, 12] 

通过for循环几次迭代散步:

i = 0A[0]1temp变得B[0]这是10
i = 1A[1]0temp停留B[0]这仍然是10
i = 2A[2]0temp停留B[0]这仍然是10
i = 3A[3]1temp变得B[3]这是9
...等

+0

您能否进一步阐明?因此,首先'i'取值0,然后'A [0]'为1.因此'temp'变为10.然后循环再次转到'if'语句? – ThePredator 2014-10-10 12:25:16

+0

语句'如果A [i]'如果找到'1'则为'真';如果找到'0'则为'假'。请参阅我的编辑,通过几个重复的工作。 – CoryKramer 2014-10-10 12:30:07

+0

所以'A [i]'第一次取值1并且在循环结束前保持不变? – ThePredator 2014-10-10 12:33:44