python中csv文件的多列排序

2024-05-14 16:02:57 发布

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

我想先按一列对csv文件排序,然后再按另一列排序。在

我尝试过几种在线方法来对一个包含多个列的csv文件进行排序。问题是排序是从左到右的,所以我得到的结果是1,10,100,101,102。。。。当我想要这样的东西1,2,3,4,5,6,7,8,9,10,11。。。在

我用了这个讨论: Sorting CSV in Python 这个模块: csvsort

如有任何参考或代码,我将不胜感激。在


Tags: 模块文件csv方法代码in排序sorting
3条回答

我觉得这应该行得通

import csv

reader = csv.reader(open("file.csv"))
sortedlist = sorted(reader, key=int(operator.itemgetter(3))) 
# 3 or 'n' depending upon which column you want to sort the data

with open("sorted_file.csv", 'wb') as f:
    csv.writer(f).writerows(sortedlist)

排序时只需将键转换为int类型。在

Python令人印象深刻!!在

如果您使用的是pandas library版本>;0.25,则可以使用排序值

import pandas as pd
df = pd.read_csv('biostats.csv')
df

Name    Sex Age Height (in) Weight (lbs)
0   Alex    M   41  74  170
1   Page    F   31  67  135
2   Quin    M   29  71  176
3   Ruth    F   28  65  131
4   Ruth    F   59  75  131
5   Quin    M   19  55  46

df.sort_值(['Name','Sex'],升序=[True,True])

^{pr2}$

听起来你想要的是顺序/数字排序,但你得到的是字母排序。字母顺序是1,10,100,2等等,而顺序排序会得到1,2,10,100。在

当从CSV读入数据时,您尝试排序的数据可能是字符串格式的,在调用Python的sort函数之前,您需要将其转换为int。在

可以通过将key=int作为参数传递给sort函数来实现,这将导致它对正在排序的成员调用int()。在

更多信息可以在这里找到:How to sort a list numerically?

相关问题 更多 >

    热门问题