【问题标题】:How do I do this data transformation most efficiently我如何最有效地进行这种数据转换
【发布时间】:2016-07-12 19:06:11
【问题描述】:

我有一个非常大的 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 有 1 列。如果原始表格中没有对应的行,则每个单元格中的值应为空白。否则它将具有与该用户和mail_id对应的最新操作(点击后打开,发送后出现)。

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

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

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

【问题讨论】:

  • CSV 是否已排序?
  • 是的,已排序。而且我可以轻松地按任何列(或按列的组合)对其进行排序。

标签: python csv data-manipulation


【解决方案1】:

将数据读入某个结构的时间复杂度是 O(m*n),对于 m 行,n 列,无论用于读取数据的方法如何。使用csv.read 最容易将数据读入字典字典{user_id: {100: most_recent_action,101: None}...},然后使用csv.write 遍历输出到某些csv 的字典字典。

【讨论】:

    猜你喜欢
    • 2019-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-29
    • 2016-03-06
    • 1970-01-01
    相关资源
    最近更新 更多