【问题标题】:Sort multiple csv files (in one directory) by their individual columns按各个列对多个 csv 文件(在一个目录中)进行排序
【发布时间】:2016-05-12 17:36:39
【问题描述】:

我对 python 编码非常陌生,所以任何建议都会有所帮助!我必须创建一个函数,它将所有 csv 文件放在一个目录中,并按它们各自的列进行排序。每个 csv 文件必须按第一列(日期)、第二列(时间)和第三列(活动)排序。

我的代码对数据进行排序,但它将所有文件合并在一起。如何将文件彼此分开?

import glob
data=[]
path="/Users/sara/Desktop/*.csv"
files=glob.glob(path)
for file in files:
    f=open(file, "r")
    for line in f:
        data.append(line)
data=sorted(data, key=lambda x:(x[0],x[1],x[2]))
print(sorted(data))

【问题讨论】:

  • 请将您的代码以文本形式发布,否则我无法被搜索引擎阅读并被其他用户复制
  • 您将每个文件的每一行附加到同一个列表中,所以我希望它对所有文件的所有行进行排序,但是您希望它有什么不同?
  • 我希望这些文件分别保留在它们自己的内部。所以我想将每个文件的每一行附加到他们自己的列表中。因此,如果我在目录中有三个文件,我最终会得到三个排序列表
  • @classact,我建议你使用字典来存储这三个列表。详细说明请参考我的回答。

标签: python sorting csv


【解决方案1】:

好吧,所以你似乎将每个文件中的信息附加到同一个列表中,我建议做一个这样的列表列表

import glob
data=[]
path="/Users/sara/Desktop/*.csv"
files=glob.glob(path)
sorted_files = []
for file in files:
    f=open(file, "r")
    for line in f:
        data.append(line)

    data=sorted(data, key=lambda x:(x[0],x[1],x[2]))
    sorted_files.append(data)

for sorted_file in sorted_files:
    print(sorted(sorted_file))

因此,每次文件被完全读取并排序时,它都会将该列表附加到列表 sorted_files 以便打印出单独排序的每个文件,您可以像这样访问,sorted_files[0] 这将为您提供第一个排序文件

【讨论】:

    【解决方案2】:

    使用字典来存储你的排序列表,

    import csv
    import operator
    import glob
    
    data = dict() # filename : lists
    
    path="/Users/sara/Desktop/*.csv"
    files=glob.glob(path)
    
    for filename in files:
        # process each file
        with open(filename, 'r') as f:
            # read file to a list of lists
            lists = [row for row in csv.reader(f, delimiter=',')]
            # sort and save into a dict
            data[filename] = sorted(lists, operator.itemgetter(0, 1, 2))
    

    现在您可以获得给定文件名的排序列表,

    lists = data[filename]
    

    【讨论】:

      猜你喜欢
      • 2021-07-09
      • 1970-01-01
      • 2016-03-08
      • 1970-01-01
      • 1970-01-01
      • 2020-09-06
      • 1970-01-01
      • 2015-12-24
      • 1970-01-01
      相关资源
      最近更新 更多