我正在尝试 sort/split python 中的 csv

I'm trying to sort/split a csv in python

我得到了一个 .csv 文件,其中包含来自 11 种不同测量设备的 18k 行数据。我正在尝试为每个测量设备 copy/write 一个文件,这样我可以稍后绘制它们,更容易获得平均值。但是,使用这段代码,我将 YT 教程和网络资源拼凑在一起,这些文件中唯一写入的内容是 "fieldnames"/列的名称(无论这些内容的正确名称是什么。 它只是在插入 .csv 的第一行后停止,而不是在每一行中查找正确的值并将其插入到新的 .csv 文件中

我尝试使用一个 for 循环,其中有 11 个不同的 if/elif 条件,我认为它会将 device_id 的列过滤到正确的设备文件。

import csv
with open('Data.csv', 'r') as Data_puntenOG:
    Data_punten = csv.DictReader(Data_puntenOG)
    for line in Data_punten:
        if line['device_id'] == 'prototype01':
            with open('HS361.csv', 'w') as HS361:        
                csv_HS361 = csv.writer(HS361)
                csv_HS361.writerow(line)
        elif line['device_id'] == "prototype02":
            with open('MinID8.csv', 'w') as MinID8:
                csv_MinID8 = csv.writer(MinID8)
                csv_MinID8.writerow(line)

然后是从 prototype03 到 prototype12 的另外 9 个具有不同名称/条件的相同 elif 行,除了 9,因为那一个不在 .csv 文件中

11 个文件只有 .csv 文件的第一行 (id,device_id,measurement_type,measurement_value,时间戳) 而不是一大堆来自 .csv 文件的数据行

如果您安装了 pandas,这将读取文件并将具有相同 'device_id' 的所有行写到一个单独的文件中,文件名是 'device_id' .

import pandas as pd

df = pd.read_csv('Data.csv')

EDIT:
for id in df['device_id'].unique():
    df[df['device_id'] == id].to_csv(f"{id}.csv")

我认为最方便的方法是使用 pandas' groupby,因为它提供了唯一的 id 和它们对应的子数据帧:

import pandas as pd

df = pd.read_csv('Data.csv')

for id, group in df.groupby('device_id'):
      group.to_csv(f'{id}.csv')