Python 如何最有效地进行此数据转换

Python 如何最有效地进行此数据转换,python,csv,data-manipulation,Python,Csv,Data Manipulation,我有一个非常大的CSV文件,其结构如下: user_id,mail_id,action 1,100,sent 1,100,opened 1,100,clicked 2,100,sent 2,101,sent 我想重新格式化它以创建一个新的CSV文件,其中每个用户id有一行,每个邮件id有一列。如果原始表中没有相应的行,则每个单元格中的值应为空。否则,它将具有与该用户和邮件id对应的最新操作(打开后单击,发送后单击) 最终产品(给出上面的小数据表)应如下所示: user_id,100,101 1

我有一个非常大的CSV文件,其结构如下:

user_id,mail_id,action
1,100,sent
1,100,opened
1,100,clicked
2,100,sent
2,101,sent
我想重新格式化它以创建一个新的CSV文件,其中每个用户id有一行,每个邮件id有一列。如果原始表中没有相应的行,则每个单元格中的值应为空。否则,它将具有与该用户和邮件id对应的最新操作(打开后单击,发送后单击)

最终产品(给出上面的小数据表)应如下所示:

user_id,100,101
1,clicked,NULL
2,sent,sent

这种数据操作相当简单,但原始CSV相当长,我正在寻找如何最有效地执行此操作的技巧。

将数据读入某个结构的时间复杂度是O(m*n),对于m行,n列,无论使用何种方法读取数据。最容易读入字典的数据,
{user\u id:{100:most\u recent\u action,101:None}…}
,使用
csv.read
,然后使用
csv.write
迭代字典,输出到某个csv。csv是否已排序?是的,已排序。我可以很容易地按任何列(或列的组合)排序。