在 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组中查找频繁项的最有效方法是啥[重复]