在 Pandas 中取消聚合字符串值字段 [重复]

Posted

技术标签:

【中文标题】在 Pandas 中取消聚合字符串值字段 [重复]【英文标题】:De-aggregating a string-valued field in Pandas [duplicate] 【发布时间】:2018-08-16 05:51:57 【问题描述】:

是否可以基于字符串字段对 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】:

这是一种方法。

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

【讨论】:

不错!我不知道用于克隆记录的repeat 函数。但是,在我原来的示例中,Projects 字段是字符串值,例如第一条记录的值为'ProjectA, ProjectB'。您是否只是创建一个影子字段,将该字符串拆分为一个列表值,然后应用上述方法?

以上是关于在 Pandas 中取消聚合字符串值字段 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

pandas使用groupby函数基于指定分组变量对dataframe数据进行分组使用min函数计算所有分组中指定数值变量的聚合最小值即字段在指定分组的最小值([]方括号指定需要计算的数值字段)

关于 Pandas 聚合器操作 [重复]

通过聚合在pandas组中查找频繁项的最有效方法是啥[重复]

日期时间列的简化 pandas groupby 聚合[重复]

使用某些字段查找重复记录并使用 Pandas 库更改字段值

如何在 pandas 数据框中解连接或取消连接字符串值?