首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >熊猫: SettingWithCopyWarning str.lower()

熊猫: SettingWithCopyWarning str.lower()
EN

Stack Overflow用户
提问于 2020-12-03 18:29:29
回答 1查看 294关注 0票数 1

我想知道在尝试将SettingWithCopyWarning应用到熊猫数据栏的时候如何处理str.lower(),这样我所有的数据,只有在那一栏上才能得到小写。

我的实际代码

代码语言:javascript
运行
复制
df2["originator _ beliefs"]  = df2["originator _ beliefs"].str.lower()

我的错误:

代码语言:javascript
运行
复制
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

我的其他尝试:

代码语言:javascript
运行
复制
df3["originator _ beliefs"]  = df2.loc[df2["originator _ beliefs"].str.lower()]
df3["originator _ beliefs"]  = df2["originator _ beliefs"].str.lower().copy()

我所要做的就是将中的所有项目小写为“发起人_信念”

EN

回答 1

Stack Overflow用户

发布于 2020-12-03 18:50:29

这是警告,不是错误。在运行代码后检查df2["originator _ beliefs"];您应该看到它确实降低了您要尝试的列。警告指的是这样一个事实:您正在从推断的df1 (这就是df2 )中更改一个片段的副本,并且如果您试图更改df1,则不会更改。有办法压制警告,但这有点超出了问题的范围。

代码语言:javascript
运行
复制
In [36]: df = pd.DataFrame([[1, 'a'], [2, 'b']], columns=['num', 'char'])

In [37]: df
Out[37]:
   num char
0    1    a
1    2    b

In [38]: df1 = df[df.char == 'a']

In [39]: df1
Out[39]:
   num char
0    1    a

In [40]: df1['char'] = df1['char'].str.upper()
<ipython-input-40-0ba8b77332da>:1: 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: https://pandas.pydata.org/pandas-docs/stable/user_g
uide/indexing.html#returning-a-view-versus-a-copy
  df1['char'] = df1['char'].str.upper()

In [41]: df1
Out[41]:
   num char
0    1    A

In [42]: df
Out[42]:
   num char
0    1    a
1    2    b

有关以下内容的更多信息,请查看文档:https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy

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

https://stackoverflow.com/questions/65131972

复制
相关文章

相似问题

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