首页 > 后端开发 > Python教程 > Pandas:从 DataFrame 中选择何时创建视图而不是副本?

Pandas:从 DataFrame 中选择何时创建视图而不是副本?

Linda Hamilton
发布: 2024-11-05 00:12:02
原创
687 人浏览过

Pandas: When Does Selecting from a DataFrame Create a View vs. a Copy?

Pandas:了解生成视图与副本的规则

识别视图和副本的混乱

确定 Pandas DataFrame 中的选择结果是视图还是副本可能会令人困惑。这种混乱主要源于各种索引操作及其不同的行为。

一般规则

  • 所有 DataFrame 操作本质上都会创建副本。
  • inplace=True 选项(如果可用)允许就地修改。
  • 设置值的索引器(例如 .loc、.iloc、.iat、.at)通常会就地执行操作。
  • 使用索引器从单个数据类型对象获取值通常会生成一个视图(尽管内存布局会影响此)。
  • 使用索引器从多个数据类型对象获取值总是会生成一个视图复制。

具体示例

  • 为比较赋值:

    <code class="python">df[df.C <= df.B] = 7654321</code>
    登录后复制

    此分配修改了原始 DataFrame df,因为索引器 .loc 用于就地设置值。

  • 链式索引:

    <code class="python">df[df.C <= df.B].loc[:, 'B':'E']</code>
    登录后复制

    不鼓励此操作,因为它可能不可靠。为了避免潜在问题,请改用以下语法:

    <code class="python">df.loc[df.C <= df.B, 'B':'E']</code>
    登录后复制

基于查询修改值

要修改 a 中的所有值满足特定查询条件的DataFrame,使用loc索引器以查询条件作为参数。例如:

<code class="python">df.loc[df.C <= df.B, 'E'] = 40</code>
登录后复制

此分配只会更改 df.C 小于或等于 df.B 的行的“E”列中的值。

以上是Pandas:从 DataFrame 中选择何时创建视图而不是副本?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板