尝试学习Python并设法创建一个带有csv的脚本,将其转换为数据框,更改列,然后将csv输出到所需的样式。
我现在需要做的是能够根据我的第二列的内容输出多个csvs(首先是索引,我为输出删除了它)
我为唯一数据值设置了一个参数,然后在FOR循环中根据唯一数据值创建文件名和输出路径。
但是当我输出csv(data.to_csv)时,所有4个文件都相同且未经过滤。
这是我的代码
unique_code = data.import_code.unique()
for importcode in unique_import_codes:
#print("%s" % importcode)
filename = importcode.replace(".","") + ".csv"
#print("%s" % filename)
path = r"C:/myrequiredpath/"
#print("%s" % path)
data.to_csv(path+filename, index=False)
我的数据框称为数据 import_code是我的第二列(不是索引)
欢迎任何想法!
答案 0 :(得分:2)
我这样做:
filename = r"C:/myrequiredpath/{}.csv"
data.groupby('import_code') \
.apply(lambda g: g.to_csv(filename.format(g.name), index=False))
答案 1 :(得分:0)
您的循环中没有任何地方可以选择数据子集。最后一行
data.to_csv(path+filename, index=False)
每次都用不同的文件名写出未更改的数据框。
答案 2 :(得分:0)
您可以使用Just ("quux", "quux", Just "")
过滤数据:
loc
答案 3 :(得分:0)
如果您的目标只是导出文件,每个文件都是原始数据框的副本,并且使用唯一值作为名称,那么我会选择此路线。
unique_values = set(data['column_of_interest'])
for value in unique_values:
filename = value + ".csv"
path = r"C:/myrequiredpath/"
data.to_csv(path+filename, index=False)
如果您希望每个文件都是该数据子集的导出,请将其添加到您的循环中:
data[data['column of interest']==value]