我试图初始化实例并传递数据帧,但是由于某种原因,我得到了输出
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_indexer,col_indexer] =值
请参阅文档中的警告:http://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy self.x ['intercept'] = 1
知道我在做什么错吗?
答案 0 :(得分:3)
您正在尝试将值更改为数据框的摘要(熊猫文字中的一个切片)。
清洁后,您尝试做的是:
import requests
import lxml.html
.xpath('//a[@class="product photo product-item-photo"]/img[@class="product-image-photo"]/@src/text()')
for i in image:
print(i)
使用切片(此处为DataFrame的两列)时,熊猫可以使用副本或视图。仅读取数据无关紧要,但是如果您尝试更改数据则无关紧要,因此发出警告。
您应该传递原始数据框,并仅对其进行更改:
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)