У меня возникают трудности с переименованием некоторых значений в столбце следующим образом:
Столбец из кадра данных:
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().
Подскажите, как изменить код, чтобы не было ошибки?
pd.cut
это то, что вы хотите, и это очень гибко. Ознакомьтесь с документацией, чтобы узнать больше о том, что он может делать.
df['Encoded'] = pd.cut(df['Value'], bins=[0,150,300,100000], labels=['<=150','<150_and_<=300','>300'])
Отвечает ли это на ваш вопрос? Истинное значение Серии неоднозначно. Используйте a.empty, a.bool(), a.item(), a.any() или a.all()