我有一个带有50行数据的csv文件,我想将它分成每行的单独csv文件,其中包括第一行(标题)和相关行。
E.g。 文件1包含:row1,row2, 文件2包含:row1,row3, 文件3包含:row1,row4
等等。
目前正在使用:
import csv
counter = 1
with open('mock_data.csv', 'r', newline='') as csvfile:
reader = csv.reader(csvfile)
for row in reader:
filename = "file_%s" % str(counter)
with open(filename, 'w') as csvfile_out:
writer = csv.writer(csvfile_out)
writer.writerow(row)
counter = counter + 1
我目前正在定义'csvfile_out'。
a)我是否正确地接近了这一点 b)为什么没有定义csvfile_out的想法?
答案 0 :(得分:1)
我试过这个,它可以很好地满足你的目的。不幸的是,我没有得到任何Kitchen:<input type="checkbox" checked data-toggle="toggle" data-onstyle="primary" data-on="On" data-off="Off">
,而 with statement 在我的Python 2.7.12控制台中正常运行。
csvfile_out error
答案 1 :(得分:0)
以下是pandas
的解决方案。假设csv的内容如下:
Name, Age, Gender
John, 20, Male
Jack, 22, Male
Jill, 18, Female
我的代码如下:
import pandas as pd
df = pd.read_csv("mock_data.csv")
for index, row in df.iterrows():
file_name = row['Name']+".csv" #Change the column name accordingly
pd.DataFrame(row).T.to_csv(file_name, index=None)
这将根据列#34; Name&#34;的值创建文件名。 (即Jack,John和Jill)生成三个文件John.csv
,Jack.csv
和Jill.csv
。 John.csv
的内容如下:
Name | Age | Gender |
---------------------------
John | 20 | Male |
Jack.csv
的内容如下:
Name | Age | Gender |
---------------------------
Jack | 22 | Male |
Jill.csv
的内容如下:
Name | Age | Gender |
---------------------------
Jill | 20 | Female |
P.S: 如果您不想要标题,只需在调用header = None
函数时添加.to_csv()
即可。例如:
pd.DataFrame(row).T.to_csv(file_name, index=None, Header=None)
答案 2 :(得分:0)
你也可以使用DictReader ......
import csv
counter = 1
with open('mock_data.csv', 'r') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
filename = "file_%s" % str(counter)
with open(filename, 'w') as csvfile_out:
writer = csv.DictWriter(csvfile_out, fieldnames=reader.fieldnames)
headers = dict((n, n) for n in reader.fieldnames)
writer.writerow(headers)
writer.writerow(row)
counter = counter + 1