Groupby.first
Вы можете использовать groupby
и перед этим фильтром на Type=Guest
и выбрать имя first
при агрегировании.
Это даст нам имена с соответствующими ID
.Таким образом, мы можем сопоставить это с нашим фреймом данных и создать новый столбец:
names = df[df['Type'] == 'Guest'].groupby('ID')['Name'].first()
df['nameGuest'] = df['ID'].map(names)
print(df)
ID Type Name nameGuest
0 1 Guest Hugo Hugo
1 1 Guest Hugo Hugo
2 1 Boss Boss Hugo
3 1 Boss Boss Hugo
4 2 Boss Boss Calvin
5 2 Guest Calvin Calvin
6 2 Guest Calvin Calvin
7 3 Guest Klein Klein
8 3 Boss Boss Klein
Вывод names
print(names)
ID
1 Hugo
2 Calvin
3 Klein
Name: Name, dtype: object