2014-10-10 2 views
0

У меня есть таблица со многими столбцами. Меня интересуют только две колонки. Позволяет называть их A и B. Я хотел бы создать пустой столбец, например C = [], и добавить к нему значения в соответствии с некоторыми условиями.Добавление значения в пустой список в соответствии с условиями

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

Давайте рассмотрим приведенную выше таблицу. Если значение в столбце A == 1, добавьте значение B, для которого A == 1 в столбец C (пустой список), пока в столбце A. не появится следующий A == 1. Для следующего значения 1 в столбец А, сделайте это.

Так что я хочу, чтобы мой столбец 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]) 

Но это петли через всю мою колонну А и добавляет множество списков.

Как я могу это сделать?

+0

Что должно произойти в '' C' если A' ведет с '0' в самый первый ряд? – CoryKramer

+0

@Cyber ​​Мой столбец А имеет значение 1 в самой первой строке, а затем имеет много значений от 1 до последней строки – ThePredator

ответ

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 = 0, A[0] является 1, temp становится B[0], который 10
i = 1, A[1] является 0, temp остается B[0], который по-прежнему 10
i = 2, A[2] - 0, temp остается B[0], который по-прежнему 10
i = 3, A[3] является 1, temp становится B[3], который 9
... и т.д.

+0

Не могли бы вы прояснить далее? Итак, сначала 'i' принимает значение 0, а затем' A [0] 'равно 1. Таким образом,' temp' становится 10. Затем цикл снова возвращается к оператору 'if'? – ThePredator

+0

Оператор 'if A [i]' будет 'True', если он найдет' 1' и 'False', если он найдет' 0'. См. Мое редактирование, которое проходит через несколько итераций того, как это работает. – CoryKramer

+0

Итак, 'A [i]' впервые принимает значение 1 и останется неизменным до конца цикла? – ThePredator

Смежные вопросы