我的df非常大。
UserID Name TempName
Matt 458488 None
Matt 458488 None
Matt 458488 None
Matt 458488 None
Matt 458488 None
Pablo 213123 8748
Pablo 213123 8748
Pablo 213123 8748
Pablo 213123 8748
Pablo 213123 8748
Pablo 213123 8748
Pablo 213123 8748
Kate 2442 None
... ... ...
需要用None
值替换tempName
中的Name
。但是,只有用户在None
值中具有Temp
的地方。如果User
作为Temp != None
中的Pablo,应该通过并且tempValue应该保持不变。
没有字符串,没有NaN
TempName的示例结果:
UserID Name TempName
Matt 458488 458488
Matt 458488 458488
Matt 458488 458488
Matt 458488 458488
Matt 458488 458488
Pablo 213123 8748
Pablo 213123 8748
Pablo 213123 8748
Pablo 213123 8748
Pablo 213123 8748
Pablo 213123 8748
Pablo 213123 8748
Kate 2442 2442
... ... ...
现在,我的代码可以在简单但很慢的循环以及if上运行。
For record in df:
if df.TempName.iloc[record] == 'None':
df.TempName.iloc[record] = df.Name.iloc[record]
else:
pass
我正在寻找更快的解决方案,也许是更好的解决方案。也许有人有更好的主意?在SO上,我仅找到合并或合并整个col的解决方案,因此我需要进行部分设置。 DF有900万条记录。
它不是重复的,因为不是NaN值,只是字符串。我也无法将str'None'替换为NaN。