【问题标题】:Splitting a csv into multiple csv files by column按列将 csv 拆分为多个 csv 文件
【发布时间】:2017-09-20 04:20:39
【问题描述】:

尝试学习 Python 并设法创建了一个脚本,该脚本采用 csv,将其转换为数据框,更改列,然后将 csv 输出为所需的样式。

那么我现在需要做的是能够根据我的第二列的内容输出多个 csv(首先是索引,我将其删除用于输出)

我已经为唯一数据值设置了一个参数,然后设置了一个 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 是我的第二列(不是索引)

欢迎任何想法!

【问题讨论】:

    标签: python pandas csv dataframe


    【解决方案1】:

    我会这样做:

    filename =  r"C:/myrequiredpath/{}.csv"
    
    data.groupby('import_code') \
        .apply(lambda g: g.to_csv(filename.format(g.name), index=False))
    

    【讨论】:

      【解决方案2】:

      您可以使用loc 过滤数据:

      unique_code = data.import_code.unique() 
      for importcode in unique_import_codes:
          filename = importcode.replace(".","") + ".csv"
          path = r"C:/myrequiredpath/"
          data.loc[data.import_code==importcode].to_csv(path+filename, index=False)
      

      【讨论】:

        【解决方案3】:

        在您的循环中,您没有做任何事情来选择数据子集。最后一行

        data.to_csv(path+filename, index=False)
        

        每次只用不同的文件名写出未更改的数据框。

        【讨论】:

          【解决方案4】:

          如果您的目标只是导出文件,每个文件都是原始数据框的副本,并以唯一值作为名称,那么我会走这条路。

          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]
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2017-01-27
            • 1970-01-01
            • 2018-06-08
            • 1970-01-01
            • 1970-01-01
            • 2018-08-21
            • 1970-01-01
            • 2017-11-21
            相关资源
            最近更新 更多