我有如下代码。我收到了SettingWithCopyWarning
条消息。但是,如果我在最后一条语句之后检查3个数据帧,则只有df_numeric['class']
的值为99。在其他两个数据帧class
的值保持不变。为什么?我认为由于SettingWithCopyWarning
,在最后一个语句class
之后,所有数据框中的值都会改变
请说明发生了什么事
import pandas as pd
import numpy as np
data = [['Alex',10,5,0],['Bob',12,4,1],['Clarke',13,6,0],['brke',15,1,0]]
df = pd.DataFrame(data,columns=['Name','Age','weight','class'],dtype=float)
df_numeric=df.select_dtypes(include='number')#, exclude=None)[source]
df_non_numeric=df.select_dtypes(exclude='number')
df_non_numeric['class']=df_numeric['class'].copy()
df_numeric['class']=99
答案 0 :(得分:1)
这里是一个快速解答。这是pandas
中最常见的警告。
就像Understanding SettingwithCopyWarning in pandas所说的那样,SettingwithCopyWarning
会通知您您的操作可能未达到预期的效果,因此应检查结果以确保您没有记错。
SettingwithCopyWarning
df2
通常在您尝试为原始数据帧df1
的子集df1
分配新值
但是原始数据框{{1}}完全没有改变!
[图片来自Understanding SettingwithCopyWarning in pandas]
希望你一团糟!