当前位置: 首页 > 知识库问答 >
问题:

试图在数据帧切片的副本上设置值。在初始化期间使用熊猫

郑松
2023-03-14

我试图初始化实例和传递数据帧但出于某种原因我得到的输出

class TestReg:
    def __init__(self, x, y, create_intercept=False):
        self.x = x
        self.y = y
        if create_intercept:
           self.x['intercept'] = 1

x = data[['class', 'year']]
y = data['performance']
reg = TestReg(x, y, create_intercept=True)

尝试使用。loc[row\u indexer,col\u indexer]=改为value

请参阅文档中的注意事项:http://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-vs-a-copy self。x[‘截距’]=1

知道我做错了什么吗?

共有1个答案

孙嘉
2023-03-14

您正试图将值更改为数据帧的摘录(熊猫文字中的片段)。

清洁后,您尝试做的是:

x = data[['class', 'year']]    # x is a slice here
x['intercept'] = 1             # dangerous because behaviour is undefined => warning

使用切片时,熊猫可以使用副本或视图(此处为数据帧中的两列)。当您只读取数据时,这并不重要,但如果您试图更改数据,则会发生这种情况,因此会发出警告。

您应该传递原始数据帧,并且只通过它进行更改:

class TestReg:
    def __init__(self, data, cols, y, create_intercept=False):
        self.data = data
        self.y = y
        if create_intercept:
           self.data['intercept'] = 1
           cols.append['intercept']
        self.x = data[cols]
...
reg = TestReg(data, ['class', 'year'], y, create_intercept=True)

或者,如果不想更改原始数据帧,可以强制复制:

...
x = data[['class', 'year']].copy()
y = data['performance']
reg = TestReg(x, y, create_intercept=True)
 类似资料:
  • 我有一个小数据框,比如说: 我想有一个列的滚动平均值,所以我这样做: 它的工作原理是,我有一个名为的新列,其中包含我期望它包含的内容,但我也会收到警告消息: 试图在数据帧切片的副本上设置值。尝试改用.loc[row\u indexer,col\u indexer]=value 请参阅文档中的注意事项:http://pandas.pydata.org/pandas-docs/stable/index

  • 问题内容: 我有一个小数据框,说这个: 我想要column的滚动平均值,所以我这样做: 它的工作方式如下:我有一个新的列,该列包含我希望包含的内容,但我也收到警告消息: 试图在DataFrame的切片副本上设置一个值。尝试改用.loc [row_indexer,col_indexer] = value 请参阅文档中的警告:http : //pandas.pydata.org/pandas-docs

  • 问题内容: Jupiter Nootbook返回此警告: 请参阅文档中的警告:http : //pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus- copy 请参阅文档中的警告:http : //pandas.pydata.org/pandas-docs/stable/indexing.html#inde

  • 我正在使用从h5文件加载的调查数据作为通过熊猫包。在此中,所有行都是单个调查的结果,而列是单个调查中所有问题的答案。 我的目标是将此数据集缩减为更小的,仅包括在某个问题上具有某个描述答案的行,即在本列中具有相同的值。我能够确定具有此条件的所有行的索引值,但我找不到如何删除这些行或仅使用这些行创建新的df。

  • 我尝试加载一个FXML,并使用Java代码(而不是使用FXML标记)设置控制器。我在FXML中有不同的字段。我尝试加载(例如文本字段、按钮...)。 下面是一个例子: 如您所见,我创建了一个新的选项卡,为它设置文本,将它添加到tabpane,加载fxml,然后创建一个新的控制器,并将其设置为fxml的控制器。之后,我尝试在初始化之前在fxml中设置一个值,以便在控制器中使用它来更新文本字段或按钮。

  • 问题内容: 我有两个DataFrames。。。 是一个表,我需要从使用索引的值中提取值,这些索引是从df2中的多个列检索到的。 我看到有一个函数可以在给定索引和列值的情况下完美运行,但是当尝试向量化此函数以创建新列时,我失败了… 现在,我需要做的是在-上建立一个新的新列-当基于索引建立索引时,有效地向量化上述函数中指定的,来自的列对。 导致 。。。 问题答案: 有一个恰当地命名的函数可以做到这一点