我有一个很长的电子邮件数据框(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是原始数据框中的一个字符串,我希望它成为列表的一部分
如果要按完全相同的主题分组,可以:
然而,最有可能的是,即使主题的语义不同,它们也会有所不同。因此,如果你这样做,你可能想先对主题应用一些变换(全部放低,删除空格、标点符号等…)
否则,您可以为主题设置过滤器,例如“包含X”。你知道吗
一个合理的方法是应用单词包或word2vec和聚类进行分组。你知道吗
希望有帮助
相关问题 更多 >
编程相关推荐