gpt4 book ai didi

python - 按列值划分 csv 文件

转载 作者:行者123 更新时间:2023-12-01 04:01:44 25 4
gpt4 key购买 nike

我有超过 200 个文件,我想将它们除以列 clName 值,并在所有文件中保留标题。我还想使用 OriginalFileName-clName.txt 保存这些文件

ID  Plate   Well      ctr        clID     clName
21 5 C03 1 50012 COL
21 5 C03 1 50012 COL
21 5 C03 1 50012 COL
21 5 C04 1 50012 IA
21 5 C04 1 50012 IA
21 5 C05 1 50012 ABC


import csv
from itertools import groupby

for key, rows in groupby(csv.reader(open("file.csv")),
lambda row: row[7]):
with open("%s.txt" % key, "w") as output:
for row in rows:
output.write(",".join(row) + "\n")

我遇到的问题是该列并不总是被称为 clName,它可以被称为 clName、cll_n、c_Name。有时是第 7 列,有时是第 5 列或第 9 列。

据我所知,文件按列值分隔,但不保留标题,我必须检查每个文件以查找其列是否为第 5、7、9 等。

有没有一种方法可以让我从名称列表中检查列名称,并在找到其中一个名称时按该列值拆分文件?

示例数据 https://drive.google.com/file/d/0Bzv1SNKM1p4uell3UVlQb0U3ZGM/view?usp=sharing

谢谢

最佳答案

改用csv.DictReadercsv.DictWriter。这是一个应该为您指明正确方向的大纲。

special_col = ['cll_n', 'clName']

with open('myfile.csv', 'r') as fh:
rdr = csv.DictReader(fh)

# now we need to figure out which column is used
for c in special_col:
if c in rdr.fieldnames:
break # found the column name
else:
raise IOError('No special column in file')

# now execute your existing code, but group by the
# column using lambda row: row[c] instead of row 7
call_existing_code(rdr, c)


def call_existing_code(rdr, c):
# set up an output file using csv.DictWriter; you can
# replace the original column with the new column, and
# control the order of fields

with open('output.csv', 'w') as fh:
wtr = csv.DictWriter(fh, fieldnames=['list', 'of', 'fields'])
wtr.writeheader()

for row in groupby(rdr, lambda r: r[c]):

# [process the row as needed here]

wtr.writerow(row)

关于python - 按列值划分 csv 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36379997/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com