Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用inplace时设置WithCopy错误=True_Python_Pandas - Fatal编程技术网

Python 使用inplace时设置WithCopy错误=True

Python 使用inplace时设置WithCopy错误=True,python,pandas,Python,Pandas,在运行以下代码时,我正在使用Copy Warning进行设置: expNo = 1 file = pd.read_csv(file_name) data = file[file['valid_data']==1] data.rename(columns={'time':'delay'},inplace=True) data['delay'].replace([199, 299, 399], [200, 300, 400], inplace=True) data = data[['work','d

在运行以下代码时,我正在使用Copy Warning进行设置:

expNo = 1
file = pd.read_csv(file_name)
data = file[file['valid_data']==1]
data.rename(columns={'time':'delay'},inplace=True)
data['delay'].replace([199, 299, 399], [200, 300, 400], inplace=True)
data = data[['work','delay','answer','actual']]
if expNo == 1:
    data['prob'] = 50
if expNo ==2:
    data['prob'] = 75
prob不是csv文件中的字段,因此它被附加到文件中


谁能解释一下这里出了什么问题吗?当我学习熊猫时,我从未犯过这样的错误。

这里的问题是这个。首先,将数据读入名为“文件”的文件中。然后将“文件”DF子集为“数据”DF。然后修改“数据”。“数据”DF实际上是“文件”DF的视图。因此,您最终修改了“文件”DF的一部分。消除警告的一种方法是在第3行末尾附加“copy”:

data = file[file['valid_data']==1].copy()
这将创建一个独立于“文件”DF的“数据”DF。作为一个次要的吹毛求疵,我建议对您的DF使用更具描述性的名称

自足的代码片段(在以后的问题中非常受欢迎)如下所示:

import pandas as pd
file = pd.DataFrame([{'time': 199, 'work': 'a', 'answer': 'b', 'actual': 'a', 'valid_data': 1}, {'time': 299, 'work': 'a', 'answer': 'c', 'actual': 'a', 'valid_data': 0}, {'time': 300, 'work': 'a', 'answer': 'd', 'actual': 'a', 'valid_data': 1}])
data = file[file['valid_data']==1]
data.rename(columns={'time':'delay'}, inplace=True)
以上将给你一个警告

import pandas as pd
file = pd.DataFrame([{'time': 199, 'work': 'a', 'answer': 'b', 'actual': 'a', 'valid_data': 1}, {'time': 299, 'work': 'a', 'answer': 'c', 'actual': 'a', 'valid_data': 0}, {'time': 300, 'work': 'a', 'answer': 'd', 'actual': 'a', 'valid_data': 1}])
data = file[file['valid_data']==1].copy()
data.rename(columns={'time':'delay'}, inplace=True)

以上内容不会向您发出警告。

什么是
有效的
?对不起,这是数据,忘记编辑了。请仔细检查您的代码。在第3行添加.copy()后,警告消失了。
import pandas as pd
file = pd.DataFrame([{'time': 199, 'work': 'a', 'answer': 'b', 'actual': 'a', 'valid_data': 1}, {'time': 299, 'work': 'a', 'answer': 'c', 'actual': 'a', 'valid_data': 0}, {'time': 300, 'work': 'a', 'answer': 'd', 'actual': 'a', 'valid_data': 1}])
data = file[file['valid_data']==1].copy()
data.rename(columns={'time':'delay'}, inplace=True)