Pandas使用什么规则来生成视图和副本?
我对Pandas在决定数据帧中的选择是原始数据帧的副本还是原始数据的视图时所使用的规则感到困惑。
如果我有,例如,
df = pd.DataFrame(np.random.randn(8,8), columns=list('ABCDEFGH'), index=range(1,9))
我明白a query
返回一个副本,就像这样
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']
才不是。
是否有一个简单的规则,熊猫正在使用,我只是缺少?在这些特定情况下发生了什么; 特别是,如何更改满足特定查询的数据帧中的所有值(或值的子集)(正如我在上一个示例中尝试做的那样)?
繁花如伊
慕容3067478
相关分类