Python 如何将csv文件中的列中的数据拆分为两个单独的输出csv文件?
我有一个.csv文件,例如:Python 如何将csv文件中的列中的数据拆分为两个单独的输出csv文件?,python,csv,Python,Csv,我有一个.csv文件,例如: ID NAME CATEGORIES 1, x, AB 2, xx, AA 3, xxx, BA 如何根据类别将其形成两个输出.csv文件,例如: 文件1: ID NAME CATEGORY 1, x, A 2, xx, A 3, xxx, B 文件2: ID NAME CATEGORY 1, x, B 2, xx, A 3, xxx, A 我已经设置了输入和输出,但只是一个空for循环,在这里我被难住了: records = [line f
ID NAME CATEGORIES
1, x, AB
2, xx, AA
3, xxx, BA
如何根据类别将其形成两个输出.csv文件,例如:
文件1:
ID NAME CATEGORY
1, x, A
2, xx, A
3, xxx, B
文件2:
ID NAME CATEGORY
1, x, B
2, xx, A
3, xxx, A
我已经设置了输入和输出,但只是一个空for循环,在这里我被难住了:
records = [line for line in csv.reader(open('test_input.csv', 'rt'), delimiter=',')]
outfile = open('test_output1.csv', 'wt')
outfileWriter = csv.writer(outfile, delimiter=',')
for record in records:
#something!
outfileWriter.writerow(record)
outfile.close()
我将感谢任何帮助 CATEGORIES字段的值是否总是长度为2(两个字母)?@user1844098尝试我的代码它应该可以正常工作。这只是从ID(第一)列返回第一个和第二个字符?不,它生成您想要的输出:record[-1]返回最后一列否我是说我运行了它,test_output1.csv只是从ID列返回第一个数字,没有其他数据,test_output2.csv是从ID列返回第二个数字,没有其他数据。我使用了您的输入文件,它生成了所需的输出。请再试一次,并确保粘贴整个代码。啊,是的,对不起,我正在使用一个与我描述的类似但不完全相同的.csv文件。你说得对,它确实和我描述的一样有效。我将做一些调整,使它与我正在使用的.csv文件一起工作。
import csv
records = [line for line in csv.reader(open('test_input.csv', 'rt'), delimiter=',')]
outfile1 = open('test_output1.csv', 'wt')
outfile2 = open('test_output2.csv', 'wt')
outfileWriter1 = csv.writer(outfile1, delimiter=',')
outfileWriter2 = csv.writer(outfile2, delimiter=',')
# headers always the same
outfileWriter1.writerow(records[0])
outfileWriter2.writerow(records[0])
for record in records[1:]:
cat = record[-1].strip() # get category in form "AB"
new_record = record
new_record[-1] = "\t%s" % cat[0] # set category for file 1 with tab as a prefix
outfileWriter1.writerow(new_record)
new_record[-1] = "\t%s" % cat[1] # set category for file 2 with tab as a prefix
outfileWriter2.writerow(new_record)
outfile1.close()
outfile2.close()
import csv
with open('input.csv') as f, open('file1.csv', 'w') as f1, open('file2.csv', 'w') as f2:
header = next(f) #read header
reader = csv.reader(f, delimiter=',', skipinitialspace=True)
f1.write(header) #write header
f2.write(header) #write header
writ1 = csv.writer(f1, delimiter=',')
writ2 = csv.writer(f2, delimiter=',')
for row in reader:
c1, c2 = row[-1] #split the category into c1 and c2
writ1.writerow(row[:-1] + [c1]) #write c1 to file1
writ2.writerow(row[:-1] + [c2]) #write c2 to file2