如何根据值将CSV文件拆分为2个单独的CSV文件

时间:2019-08-22 18:50:59

标签: python csv

我有一个CSV文件,其中包含我在四个星期内工作的日期。

文件有两列[天,月]

26  8
27  8
28  8
29  8
30  8
31  8
1   9
2   9
3   9
4   9
5   9
6   9
7   9

我该如何写到两个新的CSV文件中,这些文件在月底拆分。

我希望CSV_1的输出如下:

26  8
27  8
28  8
29  8
30  8
31  8

我希望CSV_2的输出如下:

1   9
2   9
3   9
4   9
5   9
6   9
7   9

1 个答案:

答案 0 :(得分:1)

这应该有效:

import csv

def write_new_file(data, file_counter):
    with open(f'CSV_{file_counter}.csv', 'w', newline='') as new_csvfile:
        writer = csv.writer(new_csvfile)
        for new_row in new_data:
            writer.writerow(new_row)

with open('csv.csv', newline='') as csvfile:
    data = csv.reader(csvfile)
    new_data = []
    current_month = None
    file_counter = 1
    for row in data:
        if current_month is None:
            current_month = row[1]
        if row[1] != current_month:
            write_new_file(new_data, file_counter)
            current_month = row[1]
            file_counter += 1
            new_data.clear()
        new_data.append(row)
    else:
        write_new_file(new_data, file_counter)

可能会更短更甜,但是可以完成工作。以防万一,这也适用于任意月数的CSV文件,而不仅仅是2个月。

您可能需要更改输入文件名。现在,我将其设置为csv.csv。您可以添加input()以便在运行时手动输入文件名,而不是对其进行硬编码。