繁体   English   中英

根据特定列的值在python中使用defaultdict对csv列进行排序

[英]sort csv column based on value of specific column with defaultdict in python

如何以excel的排序方式对csv文件中的列进行排序。 下面是我到目前为止的csv文件和代码段。 我想对ArrivalTime进行排序,因此特定的Process和ServiceTime将继续进行。 感谢您的帮助或建议。

CSV:

    Process,ArrivalTime,ServiceTime
    A,0,3
    B,2,6
    C,4,4
    D,6,5
    E,8,2

和我的代码:

 import csv
 from collections import defaultdict

    columns = defaultdict(list)
    with open('file.csv') as f:
      reader = csv.DictReader(f) 
      for row in reader:        
        for (k,v) in row.items(): 
          columns[k].append(v)

st = columns['ServiceTime']
at = columns['ArrivalTime']
pr = columns['Process']

您是否考虑过使用pandas 它具有用于精确处理此类情况的内置方法。

import pandas as pd

# create a dataframe from the file, like an Excel spreadsheet
df = pd.read_csv('file.csv')

df.sort_values('ArrivalTime')

# returns:
  Process  ArrivalTime  ServiceTime
0       A            0            3
1       B            2            6
2       C            4            4
3       D            6            5
4       E            8            2

我同意你应该使用熊猫...

除此之外,您这里不需要defaultdict。

阅读文件并排序:

import csv
import operator as op

list_of_dicts = []
with open('in.csv','r') as f:
    reader = csv.DictReader(f)
    for line in reader:
        list_of_dicts.append(line)

list_of_dicts.sort(key=op.itemgetter('ArrivalTime'))

写出来:

with open('out.csv','w') as f:
    writer = csv.DictWriter(f,fieldnames=list_of_dicts[0].keys())
    for i in list_of_dicts: 
        writer.writerow(i)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM