当决定从数据框中选择的内容是原始数据框的副本或原始数据框的视图时,我对 Pandas 使用的规则感到困惑。
例如,如果我有,
df = pd.DataFrame(np.random.randn(8,8), columns=list('ABCDEFGH'), index=range(1,9))
我知道 aquery
返回一个副本,以便类似
foo = df.query('2 < index <= 5')
foo.loc[:,'E'] = 40
对原始数据帧没有影响,df
. 我也知道标量或命名切片返回一个视图,以便对这些进行分配,例如
df.iloc[3] = 70
或者
df.ix[1,'B':'E'] = 222
会改变df
。但是当涉及到更复杂的情况时,我会迷路。例如,
df[df.C <= df.B] = 7654321
变化df
,但是
df[df.C <= df.B].ix[:,'B':'E']
才不是。
Pandas 是否有一个我只是缺少的简单规则?在这些特定情况下发生了什么;特别是,如何更改满足特定查询的数据框中的所有值(或值的子集)(正如我在上面的最后一个示例中尝试做的那样)?
注意:这与这个问题不同;我已经阅读了文档,但没有受到启发。我还通读了关于这个主题的“相关”问题,但我仍然错过了 Pandas 使用的简单规则,以及我如何将其应用于——例如——修改值(或值的子集)在满足特定查询的数据框中。