这是一种方法。
# df1
individual house
0 name1 house1
1 name2 house1
2 name3 house1
3 name4 house2
4 name5 house2
5 name6 house2
# df2
individual transport
0 name1 car
1 name2 bike
2 name3 skate
3 name4 car
4 name5 motorcycle
5 name6 boat
df2['house'] = df2['individual'].map(df1.set_index('individual')['house'])
g = df2.groupby('house')['transport'].apply(list).reset_index()
g.join(pd.get_dummies(g['transport']\
.apply(pd.Series).stack()).sum(level=0)).drop('transport', 1)
house bike boat car motorcycle skate
0 house1 1 0 1 0 1
1 house2 0 1 1 1 0
共有3个步骤: