这是一种方法。
设定
# df1 individual house0 name1 house11 name2 house12 name3 house13 name4 house24 name5 house25 name6 house2# df2 individual transport0 name1 car1 name2 bike2 name3 skate3 name4 car4 name5 motorcycle5 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 skate0 house1 1 0 10 11 house2 0 1 11 0
说明
共有3个步骤:
- 将“房子”列添加到
df2
,从映射df1
。 - 集体运输。
- 使用
pd.get_dummies
扩展transports
列空列。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)