Python 3.4和Pandas 0.15.0
df是一个数据帧,col1是一列。使用下面的代码,我正在检查值10的存在,并将这些值替换为1000。
df.col1[df.col1 == 10] = 1000
这是另一个例子。这一次,我将根据索引更改col2中的值。
df.col2[df.index == 151] = 500
这两种情况都会产生以下警告:
-c:1: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame
See the the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
最后
cols = ['col1', 'col2', 'col3']
df[cols] = df[cols].applymap(some_function)
这将产生一个类似的警告,并附带一个建议:
Try using .loc[row_indexer,col_indexer] = value instead
我不确定我是否理解警告中指出的讨论。编写这三行代码的更好方法是什么?
请注意,这些操作是有效的。
同意Paul关于“loc”用法的意见。
对于applymap案例,您应该能够执行以下操作:
cols = ['col1', 'col2', 'col3']
df.loc[:, cols] = df[cols].applymap(some_function)
这里的问题是:df.col1[df.col1==10]
返回一个副本。
所以我想说:
row_index = df.col1 == 10
# then with the form .loc[row_indexer,col_indexer]
df.loc[row_index, 'col1'] = 100
对使用. locs进行索引/切片的赋值有一个一般性问题。 假设以下数据帧df: 要复制的代码: 我创建df1使用: 然后,我根据B中的值,使用以下公式为C赋值: 作业正常工作,但我收到一个SettingBackCopy警告。是我做错了什么,还是这是预期的功能?我认为使用. loc可以避免链式赋值。是不是我错过了什么?我正在使用熊猫14.1
我已经阅读了一些关于如何模拟或模拟HttpClient的文档,但是我不能成功地为我的单元测试复制。到目前为止,我还不能接口HttpClient,所以我选择注入HttpMessageHandler,其想法是设置它,以便返回对客户机的任何调用的响应。
我试图操纵一个数据帧,它是从Sci Kit Learn的train_test_split操作中收到的。系统提供了以下信息: /usr/local/lib/python3.6/site packages/pandas/core/index.py:179:SettingWithCopyWarning:试图在数据帧中的切片副本上设置值 以下内容会在我的系统上引发警告: 我使用以下版本: python:'
我遇到的一个问题是水平导航栏。我已经使用flexbox实现了它。 我有一个导航条,当我缩小它时,列表项(有黑色边框)不会停留在无序列表容器中(有紫色边框) 根据我对每个flex box的理解,应该使用flex属性在父容器中调整大小。但是在我的例子中,列表项不会在无序列表容器中调整大小。以下是正在发生的事情的图片: 这是我的html代码:
我试图在压模上的单个pdf中添加多个签名。我可以添加多个母模。在我的一个案例中,我得到了错误 至少有一个签名无效。还需要使所有签名有效。 我想在一个PDF中添加多个有效符号。请帮帮我。在图中,只有一个符号是有效的,其他符号是无效的,所以让我看看我做错了什么 下面是我的代码快照