我有一个pandas DataFrame,其数据来自几个Wiki表格。 DataFrame有一个名称列,其中一些名称后跟“\ r \ n(主教练)”。我想删除它,所以我尝试了这个:
df['name'][df.name.str.contains(r'coach')] =\
df['name'][df.name.str.contains(r'coach')].apply(lambda x: x[0:-14])
当它运行时,我得到一个SettingWithCopyWarning。我按照SO Q&A中的建议尝试使用.loc:
mask = df.loc[:,'name'] == df['name'].str.contains(r'coach')
但是每个值都返回False,所以当我在DataFrame中使用它时,我得到一个空系列。
我不确定我在哪里出错了。有什么指针吗?
答案 0 :(得分:3)
你可以试试这个:
mask = df.name.str.contains(r'coach')]
df.loc[mask, 'name'] = df.loc[mask, 'name'].str[:-14]
或者正如@piRSquared评论的那样,这条简单的行也应该有效:
df.loc[mask, 'name'] = df.name.str[:-14]