gpt4 book ai didi

python - 使用 [ ] 而不是点访问 Dataframe 列时出现 Pandas 'SettingsWithCopyWarning'

转载 作者:太空宇宙 更新时间:2023-11-03 17:22:59 28 4
gpt4 key购买 nike

当从 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

不知何故,当尝试重现此问题时,仅使用这两列从头开始创建 dfdf['c'] = df['a'] - df['b '] 不显示 SettingWithCopyWarning!

最佳答案

这是一种不明确的行为,因为您正在访问一个不存在的属性,因此 pandas 会创建一个属性,而前者显式尝试键查找,没有找到它并创建新列。

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

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

关于python - 使用 [ ] 而不是点访问 Dataframe 列时出现 Pandas 'SettingsWithCopyWarning',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32937206/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com