根据pandas df

时间:2019-06-11 06:35:17

标签: python pandas dataframe

我的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。

0 个答案:

没有答案