我有一个图表,其中一些行没有值。我希望它取上一行的值。如下所示:
for index, item in enumerate(df4.Settle):
if (item == 'No value'):
item = item[index-1] #<--I want to do this
怎么做?
答案 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)