我得到了一个.csv文件,其中包含来自11种不同测量设备的18k行数据。我正在尝试为每个测量设备复制/写入一个文件,以便稍后进行绘制,以使平均值更容易。但是,通过这段代码,我将它们组合在一起,从YT教程和Web来源进行了打乱,这些文件中写入的唯一内容是“字段名” /列名(无论这些名称的正确名称是什么)。 它只是在插入.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)
,然后再从原型03到原型12,再添加9条具有不同名称/条件的相同elif行,因为9除外,因为那不在.csv文件中
11个文件,仅.csv的第一行 (id,device_id,measurement_type,measurement_value,时间戳) 而不是一大堆包含.csv文件中的数据的行
答案 0 :(得分:2)
如果已安装熊猫,这将读取文件并将具有相同“ 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")
答案 1 :(得分:0)
我认为最方便的方法是使用熊猫的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')