Pandas Dataframe:为什么df.loc [df ['height']> 3,'height'] = 2和df.loc [df ['height']> 3,['height']] = 2之间有区别

时间:2020-04-11 11:08:20

标签: python pandas dataframe set variable-assignment

我有一个名为df的熊猫数据框,其中有几列,其中一列称为“高度”。我想修改高于3的高度并将其替换为2。我使用了以下代码:

df.loc[df['height']>3,'height'] = 2

这没有做任何修改。

我使用以下代码:

df.loc[df['height']>3,['height']] = 2

这很好用。我有点理解,在第一个版本中,创建了df的副本版本,但是尚不清楚原因,我很奇怪让[]做出这样的更改。

有人可以解释发生了什么事吗?

1 个答案:

答案 0 :(得分:0)

问题是您没有提供minimal, reproducible example,因此尝试帮助您成为一种猜测游戏:

假设您有一个简单的数据框,例如

Task List

然后,您的两条代码行都可以正常工作,除了第二个版本中完全不需要额外的索引运算符[],并且在两种情况下都没有x <- seq(-10, 10, 0.001) fx <- function() if(x < 0 ) {fx<- sin(x) } else if (x >= 0 && x < 2) { fx<- x^2 } else if(x >= 2 ) { fx<- 4*exp(x-2) } } plot(x, fx) 涉及。