最佳答案
我对熊猫使用的规则感到困惑,当决定从一个数据框架选择是一个原始数据框架的副本,或原始视图。
举个例子,
df = pd.DataFrame(np.random.randn(8,8), columns=list('ABCDEFGH'), index=range(1,9))
我知道 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']
没有。
有没有一个简单的规则,熊猫正在使用,我只是缺少?在这些特定的情况下会发生什么; 特别是,如何更改数据框架中满足特定查询的所有值(或值的子集)(正如我在上面的示例中试图做的那样) ?
注意: 这和 这个问题不一样,我读过 文件,但是没有受到启发。我也通读了关于这个主题的“相关”问题,但我仍然没有看到熊猫使用的简单规则,以及我将如何应用它ーー例如ーー修改数据框架中满足特定查询的值(或值的子集)。