首页 >后端开发 >Python教程 >pandas 中的 `inplace=True` 有害吗?

pandas 中的 `inplace=True` 有害吗?

DDD
DDD原创
2024-11-25 09:37:16239浏览

Is `inplace=True` in pandas Harmful?

在pandas中,inplace = True被认为是有害的,还是没有?

总之,是的,inplace = True被认为是有害的对大熊猫有害。此 GitHub 问题明确建议在不久的将来在 api 范围内弃用 inplace 参数。以下是一些原因:

  • 无论如何都会创建副本:与它的名称相反,inplace = True 通常不会阻止创建副本。它(几乎)从不提供任何性能优势。大多数就地和异地版本的方法都会创建数据的副本,而就地版本会自动将副本分配回来。
  • 阻碍方法链接: Inplace = True 也会阻碍方法链接。比较以下的工作:
result = df.some_function1().reset_index().some_function2()

相对于:

temp = df.some_function1()
temp.reset_index(inplace=True)
result = temp.some_function2()
  • 意外的陷阱:调用 inplace = True 可以触发SettingWithCopyWarning ,这可能会导致意外的行为:
df = pd.DataFrame({'a': [3, 2, 1], 'b': ['x', 'y', 'z']})

df2 = df[df['a'] > 1]
df2['b'].replace({'x': 'abc'}, inplace=True)
# SettingWithCopyWarning: 
# A value is trying to be set on a copy of a slice from a DataFrame

此外,值得注意的是,pandas 操作默认为 inplace = False 是有原因的。这允许链式/函数式语法(例如,df.dropna().rename().sum()),避免昂贵的SettingWithCopy检查,并在幕后提供一致的行为。

因此,通常建议避免使用 inplace = True 除非你有特定的需要。

以上是pandas 中的 `inplace=True` 有害吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn