首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >熊猫尝试使用.loc[row_indexer,col_indexer] = value

熊猫尝试使用.loc[row_indexer,col_indexer] = value
EN

Stack Overflow用户
提问于 2018-07-15 00:10:06
回答 1查看 3K关注 0票数 1

下面是我的例子

代码语言:javascript
复制
data = {'Team': ['Riders', 'Riders', 'Devils', 'Devils', 'Kings',
         'kings', 'Kings', 'Kings', 'Riders', 'Royals', 'Royals', 'Riders'],
         'Rank': [1, 2, 2, 3, 3,4 ,1 ,1,2 , 4,1,2],
         'Year': [2014,2015,2014,2015,2014,2015,2016,2017,2016,2014,2015,2017],
         'Points':[876,789,863,673,741,812,756,788,694,701,804,690]}
data = pd.DataFrame(data)
data.head()

当我这样做的时候,我收到了熊猫图书馆的警告

代码语言:javascript
复制
from sklearn.model_selection import train_test_split
train_new, val_new = train_test_split(data, test_size=0.2)

col = 'Team'
means = data.groupby(col)['Points'].mean()
train_new[col + '_mean_target'] = train_new[col].map(means)
train_new.head()

这是警告

SettingWithCopyWarning:一个值试图在来自DataFrame的片的副本上设置。尝试使用.locrow_indexer,col_indexer =代替

当我使用.loc时

代码语言:javascript
复制
col = 'Team'
means = data.groupby(col)['Points'].mean()
train_new.loc[:,col + '_mean_target'] = train_new.loc[:,col].map(means)
train_new.head()

它显示了同样的警告,那么代码有什么问题呢?

EN

回答 1

Stack Overflow用户

发布于 2018-07-16 21:23:13

另一种方法是禁用链式赋值,它适用于代码,而不需要创建副本:

代码语言:javascript
复制
# disable chained assignments
pd.options.mode.chained_assignment = None

这是这个相关问题的答案(不会说是一个重复的问题)- Pandas DataFrame: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51344329

复制
相关文章

相似问题

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