首页 > 解决方案 > Pandas 转换:一对多关系到一对一

问题描述

我有一个熊猫数据框,这样

               APP_ID               SETTING_ID
0                 7              [1009, 962, 430]
1                 8              [103, 914, 890, 218]

我需要对其进行转换,SETTING_ID以使列表中的每个都与APP_ID

               APP_ID          SETTING_ID
0                 7              1009
1                 7              962
2                 8              103
3                 8              914
4                 8              890

标签: pandaslistone-to-many

解决方案


这就是所谓的unnest

pd.DataFrame({'APP_ID':df.APP_ID.repeat(df.SETTING_ID.str.len()),'SETTING_ID':sum(df.SETTING_ID.tolist(),[])})
Out[367]: 
   APP_ID  SETTING_ID
0       7        1009
0       7         962
0       7         430
1       8         103
1       8         914
1       8         890
1       8         218

推荐阅读