如何逐列遍历特定记录

时间:2020-04-13 14:38:41

标签: python

我正在尝试编写一种方案,该方案需要逐列遍历特定记录,但无法将其概括化。下面是一个示例方案:

input data

输出应为:如果在记录中,特定的列值不为null且小于0,则代码应在相同索引中遍历下一个列值,并寻找出现的任何正值或null值,然后将其替换具有该列值的负值。

output data

因此,基本上,在特定记录中,如果任何单元格包含负值,则代码应检查同一记录中的下一个单元格,并应继续检查直到找到空值或正值,并应使用该值替换负值

希望情况很清楚。我已附上输入和预期的输出数据以供参考。我可以使用iterrows和if,else条件编写代码,但我想将代码推广为n个列。如果没有其他条件,则不可能写50或100。

预先感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我认为最简单的方法是移调。假设d是您的数据框:

dummy = abs(max(d.max())) + 1
d = d.fillna(dummy) #Replace none with the dummy value
d[d < 0] = None #Replace negative values with none
d = d.transpose()
d = d.fillna(method="bfill") #Backfill NA's by pulling from next row (next column in the original dataframe)
d = d.transpose() #Transpose back
d[d == dummy] = None #put dummy value back to None