了解 Pandas 视图与复制规则
问题陈述
Pandas,一种流行的 Python 数据操作库,提供了一系列选择和修改数据帧的方法。但是,确定选择何时创建原始数据帧的副本或其视图可能会令人困惑。这种歧义会导致在尝试修改数据时出现意外行为。
简单规则
为了解决这种混乱,这里有一些管理 Pandas 的查看与复制行为的简单规则:
将规则应用于特定情况
让我们检查一下您提到的复杂情况:
df[df.C <= df.B] = 7654321
在这种情况下,适用索引器设置的规则。由于条件涉及两列的比较,Pandas 创建数据帧的中间副本来评估条件。然后就地修改该副本。因此,该表达式成功更改了原始数据帧中的值。
但是,链式索引表达式:
df[df.C <= df.B].ix[:, 'B':'E']
违反了规则。链接两个索引器会创建单独的 Python 操作,使 Pandas 难以可靠地拦截。这可能会导致意外行为,因此强烈建议不要这样做。
使用查询修改数据帧
要根据查询修改数据帧值,请使用以下方法:
df.loc[df.C <= df.B, 'B':'E'] = 7654321
此表达式使用单个索引器来评估查询条件并指定要修改的列子集。它比链式索引方法更快、更可靠。
以上是如何根据查询修改 Pandas 数据框而不出现意外行为?的详细内容。更多信息请关注PHP中文网其他相关文章!