Попробуйте следующее:
Изменить:
В случае всех +ve
значений pd.cut(df.loc[df["Value"]<0,'Value'], bins, labels=bins[1:])
дает результат Series([], Name: Value, dtype: category
- и, следовательно, ошибку назначение.
Но простой try except
должен избегать этого:
from contextlib import suppress
with suppress(ValueError):
df.loc[df["Value"] > 0.0,"Bin"] = pd.cut(df.loc[df["Value"]>0,'Value'], bins, labels=bins[:-1])
with suppress(ValueError):
df.loc[df["Value"] < 0.0,"Bin"] = pd.cut(df.loc[df["Value"]<0,'Value'], bins, labels=bins[1:])
Кстати, здесь labels=bins[:-1]
и labels=bins[1:]
выполняет работу left
и right
в ваш исходный код.