【问题标题】:Sorting in ascending order using the second column of a CSV?使用 CSV 的第二列按升序排序?
【发布时间】:2019-03-22 01:24:12
【问题描述】:

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

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

【问题讨论】:

  • 您确定不想使用 pandas 吗?
  • 我是 python 新手,不熟悉那个库。
  • 也许只是检查一下。由于您在这里需要的只是pandas中的一个功能@

标签: python python-3.x csv


【解决方案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('Arrival Time') 的事情。

【讨论】:

  • 谢谢你,我要让自己更熟悉熊猫。
猜你喜欢
  • 2016-07-19
  • 1970-01-01
  • 2023-01-09
  • 1970-01-01
  • 2016-11-07
  • 2022-01-15
  • 1970-01-01
  • 2020-10-05
  • 1970-01-01
相关资源
最近更新 更多