【发布时间】:2016-10-31 10:19:08
【问题描述】:
我正在使用通过子设置前一个创建的数据框“副本” - 见下文:
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() 方法(语法方面)。有没有办法可以使用 .query() 方法而不是我链接的问题中建议的方法来创建新的 Dataframe 对象?我已经尝试了 iloc 的一些选项,但到目前为止还没有成功。
【问题讨论】:
-
你的目标是什么?你想要一个具有独立值的 DF(副本)吗?注意:这会花费你额外的内存。
-
在这个例子中是的,我的意图是让 df_filtered 成为一个完全不同于 df 的独立对象。我意识到这两个对象都将在内存中,但对于这个例子来说没关系。