使用inplace=Tru时设置为复制错误

2024-10-01 05:00:23 发布

您现在位置:Python中文网/ 问答频道 /正文

在运行以下代码时,我正在使用复制警告进行设置:

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文件中的一个字段,因此它被附加到文件中

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


Tags: 文件csv代码nametrue警告readdata
1条回答
网友
1楼 · 发布于 2024-10-01 05:00:23

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

data = file[file['valid_data']==1].copy()

这将创建一个独立于“文件”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)

以上不会给你一个警告

相关问题 更多 >