Может быть, это глупый вопрос, но я запутался между ними, и логика применения метода groupby в этом случае будет оценена по достоинству.groupby + Арифметическая операция на pandas dataframe в python
У меня есть dataframe как
id NAME TYPE SCORE title
123 DDLJ cat1 1-6 5
123 DDLJ cat1 9-10 25
123 DDLJ cat1 N 5
456 Satya cat2 9-10 1
456 Satya cat2 N 3
222 India cat2 1-6 1
Мне нужно выяснить, для groupof (ID NAME TYPE) столбец с именем «cat_score» должен быть сформирован с логикой «для этой группы [названия для SCORE (9 -10) - название для SCORE (1-6)]/[сумма заголовка этой группы] "
#ex for group 123, DDLJ cat1
cat score = (title at SCORE "9-10" - title at SCORE "1-6")/(Sum of title of that group)
= (25 - 5)/(35)
= 0.58
Примечание :: Есть 3 типа SCORE [" 9-10" , «1-6 "," N "]. Поэтому, если для любой группы какая-либо из категории баллов не найдена, ее следует рассматривать как 0 или ее можно игнорировать.
Мой последний dataframe должен выглядеть
id NAME TYPE SCORE title Cat_Score
123 DDLJ cat1 1-6 5 0.58
123 DDLJ cat1 9-10 25 0.58
123 DDLJ cat1 N 5 0.58
456 Satya cat2 9-10 1 0.34
456 Satya cat2 N 3 0.34
222 India cat2 1-6 1 -1
Пожалуйста Suggest.
Я попытался, взяв одну группу
s = round((int(df[(df['id']=='123') & (df['NAME'] == 'DDLJ') & (df['TYPE']=='cat1') & (df['SCORE']=='9-10')]['title'].values[0]) - int(df[(df['id']=='123') & (df['NAME'] == 'DDLJ') & (df['TYPE']=='cat1') & (df['SCORE']=='1-6')]['title'].values[0]))/(int(df['title'].sum())),2)
s = 0.58
Но для всех групп, я путаюсь, как повторить.
Вы можете проверить результат для второй группы? Разве это не должно быть '(1-0)/4 = 0,25' – ayhan
@ ayhan-yes вы правы – Satya