我正在尝试通过逻辑条件更新熊猫数据框,但是由于以下错误而失败,
df[df.b <= 0]['b'] = 0
A value is trying to be set on a copy of a slice from a DataFrame. Try using .loc[row_indexer,col_indexer] = value instead
我该如何工作?
数据:
df = pd.DataFrame({'a': np.random.randn(4), 'b': np.random.randn(4)})
a b
0 1.462028 -1.337630
1 0.206193 -1.060710
2 -0.464847 -1.881426
3 0.290627 0.650805
我正在学习熊猫。在R中,语法如下所示,
df[df$b <= 0]$b <- 0
最佳答案
使用
df.loc[df.b <= 0, 'b']= 0
为了提高效率,熊猫仅从以前的DataFrame创建引用,而不是每次应用过滤器时都创建新的DataFrame。
因此,当您为DataFrame分配一个值时,需要在源DataFrame中更新它(而不仅仅是它的当前片段)。这就是警告中提到的内容
试图在DataFrame的切片副本上设置一个值。尝试改用.loc [row_indexer,col_indexer] = value
为避免这种情况,使用了
.loc
语法。有关DataFrame indexing的更多信息
关于python - 根据条件更新 Pandas 数据框的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33274628/