Saya memiliki df seperti yang ditunjukkan di bawah ini

Df

ID       Age
1        0
2        20
3        50
4        70
5        100
6        150
7        5

Dari atas saya ingin menilai pelanggan berdasarkan usia.

Kondisi:

if Age <= 0, then Score = 100
if 0 < Age <= 10, then Score = 90
if 10 < Age <= 30, then Score = 80
if 30 < Age <= 90, then Score = 50
else Score = 10

Keluaran yang Diharapkan

ID       Age           Score      
1        0             100     
2        20            80    
3        50            50
4        70            50
5        100           10
6        150           10
7        5             90

Mencoba di bawah fn:

def AgeScoring(x):
    if x <= 0:
        return 100
    elif x <= 10 :
        return 90
    elif x <= 30: 
        return 80
    elif x <= 90:
        return 50
    else:
        return 10



df['Score'] = df['Age'].apply(AgeScoring)

Pertanyaan saya adalah bagaimana hal itu dapat dilakukan dengan menggunakan pd.cut

0
Danish 3 September 2020, 17:51

1 menjawab

Jawaban Terbaik

Tentukan tempat sampah dan tetapkan Skor sebagai label tempat sampah. Di sini saya secara eksplisit menulis penutupan sebagai right=True, yang merupakan default.

import pandas as pd
import numpy as np

df['Score'] = pd.cut(df['Age'], bins=[-np.inf, 0, 10, 30, 90, np.inf], 
                     labels=[100, 90, 80, 50, 10], right=True)

   ID  Age Score
0   1    0   100
1   2   20    80
2   3   50    50
3   4   70    50
4   5  100    10
5   6  150    10
6   7    5    90
4
ALollz 3 September 2020, 14:57