在Pandas中反汇总字符串值字段

时间:2018-03-08 00:38:18

标签: python pandas concatenation

是否有可能根据字符串字段对Pandas数据帧进行解聚合(或者可能是去连接),该字符串字段包含您现在希望看到的分隔的项目的分隔列表?类似于在进行关系数据建模时将数据集转换为1NF。

例如,有一种直截了当的方式:

Name    Projects
Joe     ProjectA, ProjectB
Mary    ProjectC, ProjectD, Project E

并将其转换为:

Name    Projects
Joe     ProjectA
Joe     ProjectB
Mary    ProjectC
Mary    ProjectD
Mary    ProjectE

1 个答案:

答案 0 :(得分:1)

这是一种方式。

df = pd.DataFrame({'Name': ['Joe', 'Mary'],
                   'Projects': [['ProjectA', 'ProjectB'],
                                ['ProjectC', 'ProjectD', 'ProjectE']]})

lens = list(map(len, df['Projects'].values))

res = pd.DataFrame({'name': np.repeat(df['Name'], lens),
                    'Projects': np.concatenate(df['Projects'].values)})

#    Projects  name
# 0  ProjectA   Joe
# 0  ProjectB   Joe
# 1  ProjectC  Mary
# 1  ProjectD  Mary
# 1  ProjectE  Mary