熊猫:向新列添加常量

时间:2018-07-31 06:14:31

标签: python pandas

为什么这样做:

dfTest_4 = dfMasterExChk[
    (dfMasterExChk.quoll_status.isin(['In Service','In Service - Not 
Accepted'])) &
    (dfMasterExChk.emn_active.isin(['Yes'])) &        
    (dfMasterExChk.atoll_Tx_status.isin(['']))
    ]
dfTest_4['errMsg'] = 'Not in Atoll'

工作,但给我一个警告味精,没有意义吗? 我没有复制任何东西! 另外,如果我使用.loc,则必须使用for循环或Apply或这些可怕的令人讨厌的神奇lambda。

抱歉,在这种情况下,这似乎是胡说八道

这是我得到的错误:

“ SettingWithCopyWarning: 试图在DataFrame的切片副本上设置一个值。 尝试改用.loc [row_indexer,col_indexer] =值

请参阅文档中的警告:http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy   #--编码:utf-8--“

1 个答案:

答案 0 :(得分:1)

您可以使用df.loc[:,'new_col']="error_msg" 这是因为通过给出前一种方法,系统无法知道您是将值分配给副本还是引用。因此,警告触发以检查输出。您可以在此博客中了解更多信息。 dataquest.io/blog/settingwithcopywarning

使用.loc方法,我们为数据帧分配的值不是副本,因此不会发生错误。

.loc更快,因为它不会尝试创建数据副本。 .loc旨在就地修改您现有的数据帧,从而提高内存效率。 .loc是可预测的,它具有一种行为