我有一个名为df的熊猫数据帧,它有几列,其中一列被称为“高度”。我想修改大于3的高度,并将它们替换为2。我使用了以下代码:
df.loc[df['height']>3,'height'] = 2这不会做任何修改。
我使用以下代码:
df.loc[df['height']>3,['height']] = 2这可以很好地工作。我在某种程度上理解,在第一个版本中,创建了df的副本版本,但是,不清楚为什么,我很奇怪让[]做出这样的改变。
有人能解释一下发生了什么吗?
发布于 2020-04-11 21:05:06
问题是您没有提供minimal, reproducible example,因此尝试帮助您变成了一种猜测游戏:
假设您有一个简单的数据帧,比如
import pandas as pd
df = pd.DataFrame({'height':range(6)})然后,您的两个代码行都工作得很好,除了第二个版本中的额外索引操作符是完全不必要的,并且在这两种情况下都不涉及copy version of df。
https://stackoverflow.com/questions/61155786
复制相似问题