【发布时间】:2016-12-30 07:51:06
【问题描述】:
StackOverflow 上有很多关于链式索引以及特定操作是创建视图还是副本的问题。 (例如,here 或 here)。我仍然没有完全理解,但令人惊奇的是官方文档说“没人知道”。 (!?!??)这是文档中的一个示例;你能告诉我他们是否真的是这个意思,还是他们只是轻率?
def do_something(df):
foo = df[['bar', 'baz']] # Is foo a view? A copy? Nobody knows!
# ... many lines here ...
foo['quux'] = value # We don't know whether this will modify df or not!
return foo
真的吗?对于那个具体的例子,“没有人知道”真的是真的吗,这是不确定的吗?这真的会在两个不同的数据帧上表现不同吗?规则真的那么复杂吗?还是这家伙的意思是有一个明确的答案,只是大多数人都不知道?
【问题讨论】:
-
是的,这令人沮丧。为了增加痛苦,同一页面稍后说:>“这有时可以工作,但不能保证,因此应该避免:”
dfc = dfc.copy()那么,我们应该如何确保 DataFrame 是传递给函数的不仅仅是另一个 DataFrame 的副本或切片??