我认为使用Python在多个文本/数字字段上对CSV文件进行排序将是一个已经解决的问题。但是我找不到任何示例代码,只有专注于对日期字段进行排序的特定代码除外。
如何在多个字段上按顺序对相对较大的CSV文件(数万行)排序?
Python代码示例将不胜感激。
这是Alex的答案,经过重新设计以支持列数据类型:
import csv
import operator
def sort_csv(csv_filename, types, sort_key_columns):
"""sort (and rewrite) a csv file.
types: data types (conversion functions) for each column in the file
sort_key_columns: column numbers of columns to sort by"""
data = []
with open(csv_filename, 'rb') as f:
for row in csv.reader(f):
data.append(convert(types, row))
data.sort(key=operator.itemgetter(*sort_key_columns))
with open(csv_filename, 'wb') as f:
csv.writer(f).writerows(data)
编辑:
我做的很蠢。我在IDLE中玩各种事情convert
,几天前写了一个函数。我忘了自己写的,而且很长一段时间都没有关闭IDLE,所以当我写上面的代码时,我以为convert
是内置函数。可悲的是没有。
这是我的实现,尽管John Machin的更好一些:
def convert(types, values):
return [t(v) for t, v in zip(types, values)]
用法:
import datetime
def date(s):
return datetime.strptime(s, '%m/%d/%y')
>>> convert((int, date, str), ('1', '2/15/09', 'z'))
[1, datetime.datetime(2009, 2, 15, 0, 0), 'z']
我对python是全新的,我正在尝试在其中实现quicksort。有人能帮我完成我的代码吗? 我不知道如何连接这三个数组并打印它们。
问题内容: 我正在尝试通过降序对数据框进行排序。我在升序参数中输入了“ False”,但我的命令仍然在升序。 我的代码是: 但输出是 问题答案: 编辑:这已经过时,请参阅@Merlin的答案。 是非空 列表 ,与。您应该写:
问题内容: 我有一些文件需要按名称排序,但是不幸的是,我无法使用常规排序,因为我也想对字符串中的数字进行排序,因此我进行了一些研究,发现所寻找的东西叫做。 我尝试了此处给出的解决方案,并且效果很好。 但是,对于诸如和这样的字符串,该字符串会导致特定的自然键算法失败,因为它仅与第一个整数匹配,在这种情况下,该整数将是和,因此它放弃了排序。因此,我认为可能会帮助匹配字符串中的所有数字并将它们分组在一起
嗨,我用冒泡排序查看了其他帖子,但解决方案在我的例子中不起作用:所以算法在我循环时重复了几次之后才起作用。但我如何在不使用输入的情况下做到这一点?这是我的代码,你知道我的意思:
本文向大家介绍详解python中sort排序使用,包括了详解python中sort排序使用的使用技巧和注意事项,需要的朋友参考一下 1.前言 昨天一学妹问我一个关于python的问题,当时在外忙碌,没时间细看。今天看一下,咋一看我还真的不知道这个问题,bookinfo.sort(reverse=True ,key=lambda x:(x[1],x[1]/x[2]))是如何排序的。但是我猜测应该是按
本文向大家介绍冒泡排序 (python版)相关面试题,主要包含被问及冒泡排序 (python版)时的应答技巧和注意事项,需要的朋友参考一下 参考回答: