使用CSV的第二列按升序排序?

2024-06-01 13:50:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在读取一个CSV文件,其中包含如下信息:

ProcessID, Arrival Time, Burst Time
0,         1,            3
1,         0,            5
2,         9,            8
3,         10,           6

我试图让它看起来更像这样,这样我就可以实现一个FCFS算法

  ProcessID, Arrival Time, Burst Time
    1,        0,            5
    0,        1,            3
    2,        9,            8
    3,        10,           6

我试着看看能不能把到达时间排序一下:

n = len(processes) #amount of processes

for i in range(n):
    print(sorted(processes[i][1]))

但是,当打印排序后的第二列时,它返回10作为['0','1']`?例如

['1']
['0']
['9']
['0', '1']

如果有人能给我指出正确的方向那就太好了


Tags: 文件ofcsv算法信息lentime排序
1条回答
网友
1楼 · 发布于 2024-06-01 13:50:08

你的数据中似乎有随机逗号。假设这些是固定的,那么您要做的就是调用单个字符串上的sorted,对其中的字符进行排序

处理以下数据:

0         ,1            ,3
1         ,0            ,5
2         ,9            ,8
3         ,10           ,6

这段代码可以满足您的需求:

from operator import itemgetter

data = [[int(element) for element in row.split(',')] for row in string.replace(' ', '').split('\n')]
sorted(data, key=itemgetter(1)

输出:

[[1, 0, 5], 
 [0, 1, 3], 
 [2, 9, 8], 
 [3, 10, 6]]

也就是说,最好使用pandas来实现这个结果,因为这样您就可以做一些类似pd.read_csv('data.csv').sort_values('Arrival Time')的事情了

相关问题 更多 >