- Pandas nie posiada czytelnego rozwiązania w tym zakresie, warto użyć tutaj
select()
z NumPy
- Najpierw definiuje się listę warunków,
- Następnie definiuje się listę opcji, gdzie kolejność odpowiada warunkom
# słownik, w którym odwołujemy się do kolumn ramki danych
conditions = [
(df['Discount'] <= .05), # zniżka ≤ 5%
(df['Discount'] > .05) & (df['Discount'] <= 10), # zniżka > 5% i ≤ 10%
(df['Discount'] > .1) # zniżka > 10%
]
# liczba wynikowa, która odpowiada warunkom zdefiniowanym w słowniku (kolejność)
options = ['Low', 'Medium', 'High']
np.select(conditions, options, default='Unexpected Value')
BDSM version
# Przykładowe dane
df = pd.DataFrame({
'Discount': [0.03, 0.07, 0.12, 0.15, 0.05]
})
# Określanie przedziałów
bins = [0, 0.05, 0.10, np.inf]
labels = ['Low', 'Medium', 'High']
# Przypisanie kategorii
pd.cut(df['Discount'], bins=bins, labels=labels, right=True)