Python Pandas SettingWithCopyWarning 副本与新对象

标签 python pandas

我正在使用通过子设置前一个创建的数据框“副本” - 见下文:

import random
import pandas as pd
df = pd.DataFrame({'data':list(random.sample(range(10,100),25))})
df_filtered = df.query('data > 20 and data < 80')
df_filtered.rename(columns={'data':'observations'},inplace=True)

问题是,当重命名方法被调用时,我收到一个 SettingWithCopy 警告,据我所知,这意味着我正在对原始(在本例中为 df)对象的副本进行操作。警告文本是:“试图在 DataFrame 的切片副本上设置一个值”

我找到了 this question使用不同的子集化方法回答了这个问题。我自己更喜欢 Dataframe.query() 方法(语法方面)。有没有一种方法可以使用 the.query() 方法而不是我链接的问题中建议的方法来创建新的 Dataframe 对象?我已经尝试了一些 iloc 选项,但到目前为止还没有成功。

最佳答案

您始终可以通过在过滤后的数据帧上调用 .copy() 来显式制作副本。具体来说,替换

df_filtered = df.query('data > 20 and data < 80')

df_filtered = df.query('data > 20 and data < 80').copy()

这是否消除了警告?

关于Python Pandas SettingWithCopyWarning 副本与新对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38087204/

相关文章:

python - uWSGI 与切诺基 : first steps

python - 如何在 PyCharm 中更改正则表达式着色

python - 如何使用 pandas read_gbq 防止 SQL 注入(inject)

python - 使用 PyCharm 在 Gunicorn 下调试 Flask 应用程序

python - pandas read csv 在固定时间内使用定界符

python - 将列表中的每 N 个元素写入多个文本文件

python - 如何在递归函数中更正 "TypeError: ' NoneType' 对象不可订阅?

python - 对角化 Pandas 系列

Python - For 循环数百万行

python - 我将如何根据 Pandas 中的另一个行条件在 groupby 对象中排名?示例包括