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

时间:2016-03-25 02:00:19

标签: 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文件,每个user_id有一行,每个mail_id有一列。如果原始表中没有对应的行,则每个单元格中的值应为空白。否则它将具有与该用户和mail_id相对应的最新操作(在打开之后点击,在发送之后点击。)

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

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

这种数据操作相当简单,但原始CSV很长,我正在寻找有关如何最有效地完成此操作的提示。

1 个答案:

答案 0 :(得分:0)

对于m行,n列,将数据读入某个结构的时间复杂度为O(m * n),与用于读取数据的方法无关。最简单的方法是使用{user_id: {100: most_recent_action,101: None}...}将数据读入字典词典csv.read,然后使用csv.write迭代输出到某些csv的字典词典。