2016-07-19 3 views
-1

У меня есть диаграмма с некоторыми строками, не имеющая значения. Я хочу, чтобы она принимала значение предыдущей строки. Что-то вроде ниже:python - установить значение с помощью оператора if

for index, item in enumerate(df4.Settle): 
    if (item == 'No value'): 
     item = item[index-1] #<--I want to do this 

Как это сделать?

+0

Ваш код работает или нет? – linusg

+0

Вы просто разместите код и скажете * «Я делаю следующее ... как это сделать?» *? – linusg

+3

Вам нужно заменить 'item [index-1]' на 'df4.Settle [index-1]', но это не сработает, если у вас есть два раза «Нет значения» в строке. – S4M

ответ

0

Я не совсем понимаю, что вы хотите сделать. Образец вы предоставили не имеет особого смысла, потому что

>> item == 'no value' # that's your condition 
>> item[index-1] in 'no value' # item[index-1] in 'no value' 
True       # will be true for any valid int 

Но я думаю, что вы хотите что-то вроде этого:

>>> lst = [[1,2,3], 'No value', [0,0,0]] 
>>> for index, item in enumerate(lst): 
... if item == 'No value': 
...  lst[index] = lst[index-1] 
... 
>>> lst 
[[1, 2, 3], [1, 2, 3], [0, 0, 0]] 
0

Это простая ошибка в третьей строке. Ваш код должен прочитать вместо

for index, item in enumerate(df4.Settle): 
    if (item == 'No value'): 
    item = df4.Settle[index-1] 

Первоначально вы принимали характер от слова «Нет значения», а теперь вы будете принимать значение из таблицы данных. Я должен указать, что это приведет к ошибке, если ваше первое значение - «Нет значения».

+2

Это не сработает, потому что вы назначаете элемент новой переменной, но вы никогда не делаете ее частью списка :) – joaquinlpereyra

+0

@joaquinlpereyra OP никогда не говорил, что хочет изменить список. –

+1

«У меня диаграмма с некоторыми строками не имеет значения. Я хочу, чтобы она принимала значение предыдущей строки. «Я предполагаю, что« это »должно относиться к диаграмме, которая состоит из строк. – joaquinlpereyra

0

Там в специальный NoneType с единственной инстанции None представлять пустые значения в питона. Кроме того, неясно, что вы хотите сделать с соответствующими значениями из графика thingy. Так если вы хотите перебрать их с помощью None вместо вашей строки 'No value':

def yield_or_previous(iterable): 
    last_item = None 

    for item in iterable: 

     if item is not None: 
      last_item = item 
      yield item 
     else: 
      if last_item is not None: 
       yield last_item 
      else: 
       # TODO: What shall be done if first item is None? 
       # Raise an exception? 
       #raise ValueError('First item must not be none') 
       # or pass? 
       pass 

# Call it 
for item in yield_or_previous(df4.Settle): 
    # Do whatever 
    print(item) 
Смежные вопросы