按主题分组电子邮件的有效方法

2024-09-24 10:24:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个很长的电子邮件数据框(90000),我想创建一个新的数据框,每个电子邮件将分组在一起的主题。例如,如果我有3封主题为“hello”的电子邮件,我会有一列作为主题,而另一列则包含3封电子邮件对应的3个电子邮件ID的列表。到目前为止,我已经:

index = 0
for i in range(df.shape[0]):
    count = 0
    for x in range(bindf.shape[0]):
        if (df['Subject'][i] == bindf['Subject'][x]):
            bindf['emailID'][x].append(df['Message-ID'][i])
            count = 1
    if count == 0:
        bindf.iloc[index] = [df['Subject'][i],df['Message-ID'][i]]
        bindf['emailID'][index] = bindf['emailID'][index].split(' ', maxsplit = 0)
        index = index +1

这是可行的,但它是难以置信的慢到我需要几个小时来运行它。你知道吗

注意:每封电子邮件都包含一个主题,电子邮件ID是原始数据框中的一个字符串,我希望它成为列表的一部分


Tags: 数据iniddf主题列表forindex
1条回答
网友
1楼 · 发布于 2024-09-24 10:24:25

如果要按完全相同的主题分组,可以:

df.groupby('subject')['ID'].apply(list)

然而,最有可能的是,即使主题的语义不同,它们也会有所不同。因此,如果你这样做,你可能想先对主题应用一些变换(全部放低,删除空格、标点符号等…)

否则,您可以为主题设置过滤器,例如“包含X”。你知道吗

一个合理的方法是应用单词包或word2vec和聚类进行分组。你知道吗

希望有帮助

相关问题 更多 >