如何基于python的常见记录将大型csv文件分解为小文件

时间:2015-11-21 03:56:45

标签: python csv records

我想做什么:

我想要做的是我有一个很大的.csv文件。我想根据BB列中的常见记录将这个大csv文件分解为许多小文件,其中HH列中包含1,以及HH列中包含0的所有不常见记录。

因此,所有文件都将包含BB列中的公共记录,其中HH列中包含1,并且所有不常见的记录在BB列中没有记录,并且在HH列中包含0。文件名应基于第2列(BB)的通用记录。请看下面的情节。 任何建议的想法都受到高度赞赏。

bigFile.csv:

   AA      BB      CC       DD     EE      FF    GG      HH
   12      53     115       10     3       3     186     1
   12      53     01e       23     3       2             1
   12      53     0ce       65     1       3             1
   12      53     173       73     4       2             1
   12      59     115       0      3       3     186     1
   12      59     125       0      3       3     186     1
   12      61     01e       23     3       2             1
   12      61     b6f       0      1       1             1
   12      61     b1b       0      6       5     960     1
   12             68b       95     3       5     334     0
   12             31a       31     2       2             0
   12             221       0      4       5             0
   12             12b       25     5       4     215     0
   12             a10       36     5       1             0      

我的预期结果文件如下:

53.csv:

   AA      BB      CC       DD     EE      FF    GG      HH
   12      53     115       10     3       3     186     1
   12      53     01e       23     3       2             1
   12      53     0ce       65     1       3             1
   12      53     173       73     4       2             1
   12             68b       95     3       5     334     0
   12             31a       31     2       2             0
   12             221       0      4       5             0
   12             12b       25     5       4     215     0
   12             a10       36     5       1             0      

59.csv:

   AA      BB      CC       DD     EE      FF    GG      HH
   12      59     115       0      3       3     186     1
   12      59     125       0      3       3     186     1
   12             68b       95     3       5     334     0
   12             31a       31     2       2             0
   12             221       0      4       5             0
   12             12b       25     5       4     215     0
   12             a10       36     5       1             0      

61.csv:

   AA      BB      CC       DD     EE      FF    GG      HH
   12      61     01e       23     3       2             1
   12      61     b6f       0      1       1             1
   12      61     b1b       0      6       5    960      1
   12             68b       95     3       5    334      0
   12             31a       31     2       2             0
   12             221       0      4       5             0
   12             12b       25     5       4    215      0
   12             a10       36     5       1             0      

1 个答案:

答案 0 :(得分:0)

您应该查看csv模块。您可以逐行读取输入文件,并根据BB列对每一行进行排序。这对于字典来说应该很容易,字典的键是BB列中的值,值是包含该行信息的列表。然后,您可以使用csv模块将这些列表写入csv文件。