gpt4 book ai didi

python - 如何根据 Pandas 数据框中的列值(int)合并行(带有字符串)?

转载 作者:太空宇宙 更新时间:2023-11-03 15:43:39 25 4
gpt4 key购买 nike

我有以下格式的数据集

df1=
userid movieid tags timestamp

73 130682 b movie 1432523704
73 130682 comedy 1432523704
73 130682 horror 1432523704
77 1199 Trilogy of the Imagination 1163220043
77 2968 Gilliam 1163220138
77 2968 Trilogy of the Imagination 1163220039
77 4467 Trilogy of the Imagination 1163220065
77 4911 Gilliam 1163220167
77 5909 Takashi Miike 1163219591

我想要另一个数据框的格式

df2=

userid tags
73 b movie[1] comedy[1] horror[1]
77 Trilogy of the Imagination[3] Gilliam[1] Takashi Miike[1]

这样我就可以将所有标签合并在一起以进行字数计数或术语频率。在排序中,我希望一个用户 ID 的所有标签都通过“”(一个空格)连接在一起,这样我还可以计算单词出现的次数。我无法将标签中的字符串连接在一起。我可以计算单词及其出现次数。任何帮助/建议将不胜感激。

最佳答案

首先计数并重新格式化每组的计数结果。将其保留为中间结果:

r = df.groupby('userid').apply(lambda g: g.tags.value_counts()).reset_index(level=-1)
r
Out[46]:
level_1 tags
userid
73 b movie 1
73 horror 1
73 comedy 1
77 Trilogy of the Imagination 3
77 Gilliam 2
77 Takashi Miike 1

这个简单的字符串操作将为您提供每行的结果:

r.level_1+'['+r.tags.astype(str)+']'
Out[49]:
userid
73 b movie[1]
73 horror[1]
73 comedy[1]
77 Trilogy of the Imagination[3]
77 Gilliam[2]
77 Takashi Miike[1]

Python 的妙处在于能够用它做这样的事情:

(r.level_1+'['+r.tags.astype(str)+']').groupby(level=0).apply(' '.join)
Out[50]:
userid
73 b movie[1] horror[1] comedy[1]
77 Trilogy of the Imagination[3] Gilliam[2] Takas...

关于python - 如何根据 Pandas 数据框中的列值(int)合并行(带有字符串)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41949507/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com