вы можете использовать это с помощью группы, как показано ниже
df = pd.DataFrame([['John', 'Male', 'na', 'Specialised', 'na'], ['John', 'Male', 'na', 'Bridgestone', 'na'], ['Lucy', 'Female', 'na', 'na', 'BMW'], ['John', 'Male', 'Vans', 'na', 'na'], ['Lucy', 'Female', 'Nike', 'na', 'na']], columns=('Name', 'Sex', 'Shoes', 'Bike', 'Car'))
df = df.mask(df == "na", '')
df.groupby(["Name", "Sex"]).agg(lambda row: ",".
join([val for val in row if val.strip()!=""]))