【发布时间】:2015-08-11 16:53:42
【问题描述】:
我正在尝试将 pandas DataFrame 中的多个不同值都设置为相同的值。我以为我理解了 pandas 的布尔索引,但我还没有找到任何关于这个特定错误的资源。
import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3], 'B': ['a', 'b', 'f']})
mask = df.isin([1, 3, 12, 'a'])
df[mask] = 30
Traceback (most recent call last):
...
TypeError: Cannot do inplace boolean setting on mixed-types with a non np.nan value
上面,我想用值30 替换掩码中的所有True 条目。
我可以改用df.replace,但这里的屏蔽感觉更高效、更直观。有人可以解释错误,并提供一种设置所有值的有效方法吗?
【问题讨论】:
-
您能否确认我的回答或 JohnE 的结果是否是您想要的,并更新您的问题以清楚地表明这一点,谢谢
-
谢谢,@EdChum。我想在掩码中设置
True值并保持False值相同。为了清楚起见,我编辑了问题。 -
别担心,我更新了我的答案,你只需反转掩码即可达到你想要的效果
-
嘿,您的电话,但我并不是要您切换复选标记,只是想澄清所需的结果。如果您想将其切换回他的,我认为@EdChums 的答案会更简洁明了。
-
是的,你是对的。他们都是很好的答案。对不起!