# Incorporate delisting return
i = 0
for tc, col in dlret.iloc[:,0:50].iteritems():
idx = col.index[col.notnull()]
if len(idx) != 0:
tr = idx[0]
val = col.ix[tr]
#ret.ix[tr, tc] = val #this line is too slow
i += 1
if math.floor(i/10) > math.floor((i-1)/10):
print i
dlret DataFrame有600行左右和25000+列。我遍历列以查找第一个非空值(退市返回),然后在ret DataFrame中找到相应的位置,将值设置为退市返回的值。但是,使用ix索引相应位置时,代码运行速度很慢。关于如何有效实现这一目标的任何建议?
答案 0 :(得分:1)
根据您的评论,您想要的是遍历列以查找每列的第一个非空值并更新ret DataFrame。 您可以使用以下代码执行此操作:
mask_first_nonnull = dlret.notnull() & (dlret.notnull().cumsum()==1)
ret[mask_first_nonnull]=dlret[mask_first_nonnull]