python - 使用if语句设置值

时间:2016-07-19 13:29:42

标签: python arrays indexing

我有一个图表,其中一些行没有值。我希望它取上一行的值。如下所示:

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

怎么做?

3 个答案:

答案 0 :(得分:0)

这是第三行中的一个简单错误。您的代码应该改为

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

最初你从“无价值”这个词中取出一个字符,而现在你将从数据表中获取值。我应该指出,如果您的第一个值是“无值”,这将导致错误。

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

答案 2 :(得分:0)

有一个特殊的NoneType,其唯一的实例None代表python中的空值。 此外,您还不清楚要对图表中的各个值做什么。 因此,假设您要使用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)