如何在 for 循环中将一行插入到 pandas 数据框中,然后递减 for 循环?

问题描述 投票:0回答:1

所以我尝试 for 循环遍历表并找到丢失的行并将它们添加进去。

S-值 S1 S2 S3 ... S106 S108 S109

所以S107不见了。

目前我正在检查 count 是否 = S-value 如果它们相等则继续,否则添加行。但是,如果我在计数为 107 时添加 S107,则在下一个循环中,计数为 108,并且表位于 S109,因此它们将继续偏离 1。来自 C 的我会递减 for 循环的索引,但这似乎不起作用,只是跳转到表的另一部分。如果我只是加倍计数,如果 S108 也不存在,我可能会丢失一行。有针对这个的解决方法吗?或者在表中缺少行时向其添加行的更好方法,也许我没有以 python 思维方式解决问题。

我考虑过使用临时变量来存储索引,这是一个坏主意吗?

for ind in RB.index:
    if (flag == 1):
        ind -= 1
        flag = 0
    if (count != int(RB['S-Value'][ind].split('S')[1])):
        print(RB['P-Block'][ind],'.',RB['S-Value'][ind], count)
        RB.loc[ind-0.5] = ['Unmapped','', RB['P-Block'][ind]+'.'+'S'+str(count), RB['P-Block'][ind], 'S'+str(count) ]  # adding a row
        RB = RB.sort_index()
        flag = 1
    print(count)
    count += 1
    if (count == 113):
        count = 1
python-3.x pandas dataframe for-loop indexing
1个回答
0
投票

在Python中,在迭代数据结构时基本上不应该改变它。我建议为此多次通过。非常简单的方法:

  • 创建一个新的空数据框。
  • 迭代可能的索引值。对于每个索引,向新数据帧添加一行。如果索引位于您的数据中,请从数据框中添加相应的行。否则添加一个空行。

新的数据框应该是正确的。

注意:这不是那么高效,但基于数字(S-108 等),您只有数百行,所以应该没问题。

另一种方法:

  • 循环一次,将每个缺失的索引存储在另一个列表中。
  • 然后遍历列表,为每个索引添加一行到原始数据帧。
© www.soinside.com 2019 - 2024. All rights reserved.