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

标签 python python-3.x csv

我正在读取一个 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']

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

最佳答案

您的数据中似乎有随机逗号。假设这些已修复,您要做的就是在单个字符串上调用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( '到达时间')

关于python - 使用 CSV 的第二列按升序排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55291561/

相关文章:

python - 无法从 AWS Cloud9 上的 bs4 导入 BeautifulSoup

csv - SSMS 2016 : Exporting query results in CSV where fields are enclosed into delimiting quotes.

python - 尝试检索搁置类时的 KeyError 和 AtributeError - Python 3.6

python - 合并并同步 stdout 和 stderr?

python - subprocess.poll() 不工作

Python 子进程引用导致 fd 耗尽

python-3.x - 我可以在 Pandas 数据框上应用 Groupby 并计算所有列的平均值吗?

python - 使用Python根据文件中的标题名称更改CSV数值

csv - 使用索引选择是 Polars : How to parse and transform (select/filter? 中的反模式)似乎需要这样的 CSV?

python - Django:从管理控制台访问属于管理员的模型列表