【发布时间】:2013-11-18 22:10:21
【问题描述】:
假设我有一个 pandas.DataFrame,比如说
In [1]: df = pd.DataFrame([['a', 'x'], ['b', 'y'], ['c', 'z']],
index=[10, 20, 30],
columns=['first', 'second'])
In [2]: df
Out[2]:
first second
10 a x
20 b y
30 c z
我想用第二列的相应条目更新第一列的前两个条目。首先我尝试了
to_change = df.index <= 20
df[to_change]['first'] = df[to_change]['second']
但这不起作用。然而,
df['first'][to_change] = df['second'][to_change]
工作正常。
谁能解释一下?这种行为背后的理性是什么?虽然我经常使用 pandas,但我发现这类问题有时让我很难预测一段特定的 pandas 代码实际上会做什么。也许有人可以提供一些见解,帮助我改进我对 pandas 内部运作的心理模型。
【问题讨论】:
-
这与获得
view或copy作为回报有关。例如,参见这篇文章中的讨论:stackoverflow.com/questions/14192741/… -
是的,有答案。所以这个问题是重复的。谢谢。