繁体   English   中英

按 Dataframe 中的列表分组

[英]Group by with lists in Dataframe

我对看起来像这样的 Dataframe 有疑问:

在此处输入图像描述

它包含“ClusterLabels”(0-44),我想按 ClusterLabel 值对“文档”列进行分组。 我希望将“文档”中的这些列表合并到每个集群的一个列表中。 (应保留重复的单词)

尝试了“.groupby”参数,但它给出了错误“序列项 0:预期的 str 实例,找到列表”。

有人可以帮忙吗?

不要使用 sum 来连接列表。 它看起来很花哨,但它是二次的,应该被认为是不好的做法。

更好的是使用扁平列表的列表理解:

df1 = (df.groupby('ClusterLabel')['Document']
         .agg(lambda x: [z for y in x for z in y])
         .reset_index())

或者在itertools.chain中展平:

from  itertools import chain

df1 = (df.groupby('ClusterLabel')['Document']
         .agg(lambda x: list(chain(*x)))
         .reset_index())

你可以这样做:

导入 pandas 作为 pd

df = pd.DataFrame({"Document" : [["a","b","c","d"],["a","d"],["a","b"],["c","d"],["d"]],
                   "ClusterLabel": [0,0,0,1,1]})

df

在此处输入图像描述

df.groupby("ClusterLabel").sum()

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM