从2个现有列创建新列时,pandas
为什么抛出SettingsWithCopyWarning
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
运行时
df['c'] = df['a'] - df['b']
但不是在跑步的时候
df.c = df['a'] - df['b']
此外,c
列是使用df['c']
创建的,而不是使用df.c
时创建的
df['a']
是numpy.float64
的pandas.core.series.Series
df['b']
是numpy.int64
的pandas.core.series.Series
不知何故,当试图重现这个问题时,仅用这两列从头创建df
时,df['c'] = df['a'] - df['b']
不会显示SettingWithCopyWarning
!你知道吗
这是一种模棱两可的行为,因为您正在访问一个不存在的属性,所以pandas将创建一个属性,而前者显式地尝试一个键查找,没有找到它并创建新的列。你知道吗
我强烈建议您避免使用点运算符访问列,因为它会导致奇怪和错误的行为。你知道吗
至于警告,它取决于
df
和df['a']
和df['b']
实际上是什么。你知道吗相关问题 更多 >
编程相关推荐