首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SettingWithCopyWarning与.loc

SettingWithCopyWarning与.loc
EN

Stack Overflow用户
提问于 2018-03-16 20:40:55
回答 1查看 848关注 0票数 1

此代码生成SettingWithCopyWarning如下所示:

代码语言:javascript
复制
raw_corpus.loc[:,'constructed_recipe']=raw_corpus.loc[:,'trigger_channel_cat'] + " " + raw_corpus.loc[:,'trigger_channel_clean'] + " " + raw_corpus.loc[:,'trigger_name_clean'] + " " + raw_corpus.loc[:,'action_name_clean'] +" " + raw_corpus.loc[:,'action_channel_clean'] +" " + raw_corpus.loc[:,'action_channel_cat']

/Users/dlhoffman/anaconda3/envs/gensim-py35/lib/python3.5/site-packages/pandas/core/indexing.py:537: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
  self.obj[item] = s

此代码生成一个不同的警告:

代码语言:javascript
复制
raw_corpus['constructed_recipe']=raw_corpus['trigger_channel_cat'] + " " + raw_corpus['trigger_channel_clean'] + " " + raw_corpus['trigger_name_clean'] + " " + raw_corpus['action_name_clean'] +" " + raw_corpus['action_channel_clean'] +" " + raw_corpus['action_channel_cat']

/Users/dlhoffman/anaconda3/envs/gensim-py35/lib/python3.5/site-packages/ipykernel_launcher.py:5: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
"""

这两段代码都可以做我想做的事情,但是这个错误很烦人,我的理解是这不是一个很好的错误。我已经阅读了文档和这里的人们的建议,但我不知道我做错了什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-16 20:45:33

这是一个有充分记录的错误。看看How to deal with SettingWithCopyWarning in Pandas?

要解决这个问题,先从

代码语言:javascript
复制
raw_corpus = raw_corpus.copy(deep=True)

接下来,获取要聚合的所有列的列表:

代码语言:javascript
复制
cols = ['trigger_channel_cat', 'trigger_channel_clean', ...]

打电话给df.agg

代码语言:javascript
复制
raw_corpus['constructed_recipe'] = raw_corpus[cols].agg(' '.join, axis=1)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49329183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档