Я пытаюсь установить множество разных в pandas DataFrame всех одинаковых значений. Я думал, что я понял логическое индексирование для панд, но я не нашел никаких ресурсов для этой конкретной ошибки.pandas Установленное значение DataFrame на булевой маске
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
Выше, я хочу, чтобы заменить все True
записей в маске со значением 30
.
Я мог бы сделать df.replace
вместо этого, но маскировка выглядит немного более эффективной и интуитивной. Может ли кто-нибудь объяснить ошибку и обеспечить эффективный способ установки всех значений?
Не могли бы вы подтвердить, является ли мой ответ или результат Johne является то, что вы хотели и обновить свой вопрос четко указать на это, благодаря – EdChum
спасибо , @EdChum. Я хотел установить значения «True» в маске и оставить значения «False» одинаковыми. Я отредактировал вопрос для ясности. –
Не волнуйтесь, я обновил свой ответ, вы просто инвертируете маску, чтобы добиться того, чего хотите. – EdChum