我有900万行代码,其中我必须用上一行中的数字替换每个“。”。这意味着如果第1列包含“ 7”,则下面的点应替换为该点。但是,如果列3包含“ 44”,则后续值必须替换为44,依此类推。
问题:目前,要花10,000行需要18分钟。
您有任何想法如何对其进行优化吗?如果可以,请您提供代码吗?
试图将值放入另一个df并从那里开始工作,但这会使事情稍微快一点(从18分钟到17分钟)
我不知道为什么,但是.replace无法正常工作
for x in range(0,len(BD)):
if BD['A_SECOND'].iloc[x] <> "." :
Second = BD['A_SECOND'].iloc[x]
else:
BD['A_SECOND'].iloc[x] = Second
如前所述,代码应将第一列转换为第二列:
column1old column1new
7 7
. 7
. 7
33 33
. 33
. 33
. 33
2 2
. 2
等等..
谢谢! :)
最佳答案
您可以只将点替换为NaN值,然后使用fillna(method='ffill')
:
BD['A_SECOND'] = np.where(BD['A_SECOND'] == '.', np.nan, BD['A_SECOND'])
BD['A_SECOND'].fillna(method='ffill', inplace=True)
关于python - 循环花费太长时间来替换值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55844204/