Пожалуйста, я был бы признателен за любой вклад в эту проблему.
У меня есть эта таблица ниже
Я хочу создатьновый столбец "cap" на основе столбца ID.
шаги:Получить все уникальные значения идентификаторов с их количествомесли число больше или равно 4, вернуть Aесли число больше 2 и меньше 4, вернуть Bесли число меньше или равно 2, вернуть C
Мне нужен новый способ решения вышеуказанной проблемы
Это то, что я пробовал, хотя и получаю сообщение об ошибке.
cnt = pd.DataFrame(train['ID'].value_counts())
def cap_fnx(data, cnt):
for y in range(len(cnt['ID'].unique())):
if data['ID'] == cnt.index[y]:
if cnt.loc[y].ID >= 4:
return 'A'
if cnt.loc[y].ID > 2 and cnt.loc[y].ID < 4:
return 'B'
if cnt.loc[y].ID <= 2:
return 'C'
train['cap'] = train.apply(cap_fnx, args=(cnt))
Это образец данных;
train = pd.DataFrame(columns=['ID','score'])
train.loc[0] = np.array([11, 0.11])
train.loc[1] = np.array([11,4.64 ])
train.loc[2] = np.array([12,3.39])
train.loc[3] = np.array([11,0.44 ])
train.loc[4] = np.array([17,4.83])
train.loc[5] = np.array([17,2.22])
train.loc[6] = np.array([11,1.18])
train.loc[7] = np.array([13,4.74])
train.loc[8] = np.array([12,2.13])
train.loc[9] = np.array([8,0.44])
train.loc[10] = np.array([17,1.73])