【发布时间】:2014-06-11 08:30:46
【问题描述】:
我对 Pandas 在确定数据框中的选择是原始数据框的副本还是原始数据框的视图时使用的规则感到困惑。
如果我有,例如,
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']
没有。
Pandas 是否有一个我只是缺少的简单规则?在这些特定情况下发生了什么;特别是,如何更改满足特定查询的数据框中的所有值(或值的子集)(正如我在上面的最后一个示例中尝试做的那样)?
注意:这和this question不一样;我读过the documentation,但没有被它启发。我还通读了关于这个主题的“相关”问题,但我仍然错过了 Pandas 使用的简单规则,以及我将如何应用它——例如——修改值(或值的子集)在满足特定查询的数据框中。
【问题讨论】:
标签: python pandas dataframe indexing chained-assignment