擅长:python、mysql、java
<p>我发现这行代码有问题:</p>
<pre><code>grouped = ((i, ' '.join(df.text[df.sender_id == i])) for i in uni)
</code></pre>
<p>需要0(80M x 5M)才能执行。对于每一个发送者,它会遍历所有8000万条消息来匹配发送者,并加入匹配的电子邮件。你知道吗</p>
<p>相反,您只能反复浏览电子邮件一次:</p>
<pre><code>from collections import defaultdict
df = pd.read_csv('emails.csv')
grouped = defaultdict(str)
for i, text in zip(df.sender_id, df.text):
grouped[i] += text + ' '
with open('/storage/test.csv', 'w') as csvfile:
test_writer = csv.writer(csvfile)
for i in grouped.items(): # use iteritems in Python2
test_writer.writerow(i)
</code></pre>
<p>如果cvsfile来自“with”语句,我认为不需要显式关闭它。感谢njzk2推荐defaultdict。你知道吗</p>