ValueError, когда я пытался переименовать значения в столбце (из числа с плавающей запятой в строку)

У меня возникают трудности с переименованием некоторых значений в столбце следующим образом:

  • меньше или равно 150;
  • от 150 до 300 (включительно);
  • более 300.

Столбец из кадра данных:

    Value
0   146.0
2   148.0
3   158.0
4   207.0
6   196.0
... ...
352 148.0
353 168.0
354 136.0
355 129.0
356 208.0

Я пробовал следующим образом:

def group(df):
    
    if (df['Value'].astype(int).notna() <= 150):
        return '<=150'
    elif ((df['Value'].astype(int).notna() > 150) & (df['Value'].astype(int).notna() <= 300)):
        return '>150_and_<=300'
    elif (df['Value'].astype(int).notna() > 300):
        return '>300'

df['Encoded'] = df.notna().apply(group, axis = 1)

Приведенный выше код возвращает эту ошибку:

---> 10 df['Encoded'] = df.notna().apply(group, axis = 1) ValueError: истинное значение серии неоднозначно. Используйте a.empty, a.bool(), a.item(), a.any() или a.all().

Подскажите, как изменить код, чтобы не было ошибки?

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
1
52
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

pd.cut это то, что вы хотите, и это очень гибко. Ознакомьтесь с документацией, чтобы узнать больше о том, что он может делать.

df['Encoded'] = pd.cut(df['Value'], bins=[0,150,300,100000], labels=['<=150','<150_and_<=300','>300'])

Другие вопросы по теме