python - 使用 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('Arrival Time')
。
推荐阅读
- javascript - 在一行中编写一个嵌套过滤器
- windows - 断开连接后保持 rdp 会话活动的代码不起作用
- php - 删除当前年份之前的数组项
- php - 在没有模板覆盖的情况下更改我的帐户/丢失密码/页面上的 Woocommerce 丢失密码文本
- javascript - 如何在不重复的情况下更新谷歌地图标记位置?
- mysql - docker mysql 出现错误:连接 ECONNREFUSED
- azure - 我应该为用户分配什么角色,以便他可以管理我的 Azure 订阅中的 MFA 活动?
- laravel - Laravel - 如何解决错误方法分页不存在
- php - 如何解密密码以登录laravel?
- git - 强制将单个文件置于冲突合并状态