我正在使用Pandas数据框,从Excel文件中读取。特别是有一排给我带来了麻烦。以列表形式表示,其结构如下:
lst = [0, 2022, 0, 0, 2023, 0, 0, 2024, 0] #and so forth
我想做的是把这个列表,并得到一些看起来像这样的东西:
lst = [2022, 2022, 2022, 2023, 2023, 2024, 2024, 2024] #and so on
我尝试了以下方法:
for i in range(len(lst) - 1):
if lst[i] > 0:
lst[i - 1] = lst[i]
lst[i + 1] = lst[i]
但这只是返回一个完全由2022
组成的列表。你将如何处理这个问题?
3条答案
按热度按时间zlhcx6iw1#
您应该利用Pandas的工具专门清理数据。我们可以nullify你不想要的数字,然后forward-fill一个值并回填,例如:
jbose2ul2#
原因是你操纵同一个列表。您可以创建一个新的并更新。
qacovj5a3#
你的情况是
if lst[i] > 0:
。在它遇到第一个2022
之后,这总是正确的,因为你遇到了lst[i + 1] = lst[i]
。当你递增i
并到达下一个元素时,2022
将在那里,你将继续做同样的事情,直到你到达列表的末尾。每次出现匹配时,都需要跳过一个索引。使用
for
很难做到这一点,但可以使用while
: