gpt4 book ai didi

python - Pandas :为什么选择顺序很重要?

转载 作者:太空宇宙 更新时间:2023-11-04 03:53:49 25 4
gpt4 key购买 nike

假设我有一个 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 内部运作的心智模型。

最佳答案

在 master/0.13 中(很快发布)

这将警告(可通过提升/忽略选项控制)您正在修改副本

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

In [3]: to_change = df.index <= 20

In [4]: df[to_change]['first'] = df[to_change]['second']
pandas/core/generic.py:1008: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_index,col_indexer] = value instead
warnings.warn(t,SettingWithCopyWarning)

In [5]: df['first'][to_change] = df['second'][to_change]

关于python - Pandas :为什么选择顺序很重要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19832983/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com