在使用[]而不是d访问数据帧列时显示“SettingsWithCopyWarning”

2024-10-02 20:39:22 发布

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

从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.float64pandas.core.series.Series

df['b']numpy.int64pandas.core.series.Series

不知何故,当试图重现这个问题时,仅用这两列从头创建df时,df['c'] = df['a'] - df['b']不会显示SettingWithCopyWarning!你知道吗


Tags: tocorenumpypandasdfisvalueon
1条回答
网友
1楼 · 发布于 2024-10-02 20:39:22

这是一种模棱两可的行为,因为您正在访问一个不存在的属性,所以pandas将创建一个属性,而前者显式地尝试一个键查找,没有找到它并创建新的列。你知道吗

我强烈建议您避免使用点运算符访问列,因为它会导致奇怪和错误的行为。你知道吗

至于警告,它取决于dfdf['a']df['b']实际上是什么。你知道吗

相关问题 更多 >