У меня возникли проблемы с описанием моей проблемы, поэтому я сразу же приступлю к ней.Вот некоторые тестовые данные:
import pandas as pd
df = pd.DataFrame(data={"family":["Smith","Miller","Simpson","Miller","Simpson","Smith","Miller","Simpson","Miller"],
"first_name":["Anna","Bart","Lisa","Ida","Paul","Bridget","Harry","Dustin","George"],
"shirt_color":["green","yellow","red","yellow","green","red","yellow","red","red"]})
Теперь я хотел бы создать новый столбец в моем исходном фрейме данных, который будет содержать долю рубашки_цвета на семью, поэтому в каждой строке, например, семейство Миллер и рубашка желтая, естьто же значение 0,75 и т. д.
Я пробовал несколько подходов, но ни с одним из них не получилось.
df = df.groupby("family").apply(lambda x: x.groupby("shirt_color").apply(lambda x: x.size()/familysize))
Это казалось многообещающим, но, как вы можете видеть, я не смогполучить доступ к количеству членов семьи в последней лямбда-функции больше.Я также пытался создать объект groupby только из семейства и выполнять итерацию по фреймам данных, группируя все фреймы данных по цветам по отдельности, но каким-то образом мне не удалось в конце вернуть фреймы данных обратно к одному.
Это не 'Похоже, что это очень экзотическая вещь, связанная с фреймом данных, поэтому я уверен, что есть простой способ сделать это, но у меня нет идей.
Большое спасибо за вашу помощь заранее!