Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.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中子集数据帧并解决SettingWithCopy警告?_Python_Pandas_Dataframe_Subset - Fatal编程技术网

如何在Python中子集数据帧并解决SettingWithCopy警告?

如何在Python中子集数据帧并解决SettingWithCopy警告?,python,pandas,dataframe,subset,Python,Pandas,Dataframe,Subset,我已经在Python3 Jupyter笔记本中的数据框中阅读了一份Excel调查响应表,并希望删除个人在某个特定程序中的行。因此,我使用.loc将数据帧“df”的子集转换为新的数据帧“dfgeneral” notnurse = df['Program Code'] != 'NSG' dfgeneral = df.loc[notnurse,:] 然后,我想将标签(即满意、不满意)映射到用于表示它们的代码,并找到给出每个响应的受访者数量。有几个问题使用相同的量表,所以我循环了一遍: q5list

我已经在Python3 Jupyter笔记本中的数据框中阅读了一份Excel调查响应表,并希望删除个人在某个特定程序中的行。因此,我使用.loc将数据帧“df”的子集转换为新的数据帧“dfgeneral”

notnurse = df['Program Code'] != 'NSG'
dfgeneral = df.loc[notnurse,:]
然后,我想将标签(即满意、不满意)映射到用于表示它们的代码,并找到给出每个响应的受访者数量。有几个问题使用相同的量表,所以我循环了一遍:

q5list = ['Q5_1','Q5_2','Q5_3','Q5_4','Q5_5','Q5_6']

scale5_dict = {1:'Very satisfied',2:'Satisfied',3:'Neutral',
               4:'Somewhat dissatisfied',5:'Not satisfied at all',
               np.NaN:'No Response'}

for i in q5list:
    dfgeneral[i] = df[i].map(scale5_dict)
    print(dfgeneral[i].value_counts(dropna=False)) 
在输出中,我得到了带有复制警告的设置:

A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead
我使用.loc创建dfgeneral;这是假阳性,还是我应该做什么改变?谢谢你的帮助

dfgeneral = df.loc[notnurse,:]
这一行(第二行)获取数据帧的一个片段并将其分配给一个变量。当您想要操纵该变量时,您会看到警告(试图在数据帧的切片副本上设置一个值)

将该行更改为:

dfgeneral = df.loc[notnurse, :].copy()
这一行(第二行)获取数据帧的一个片段并将其分配给一个变量。当您想要操纵该变量时,您会看到警告(试图在数据帧的切片副本上设置一个值)

将该行更改为:

dfgeneral = df.loc[notnurse, :].copy()