如何对csv文件的1列进行排序并打印行?

2024-06-28 20:35:35 发布

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

我的CSV文件是这样的

0.0063,0.0121,band -> mcr music
0.0061,0.0123,band -> mcr
0.0062,0.0122,band -> orchestra

如何对csv文件的第一列进行排序并打印每一行?所以,在这种情况下,最终输出应该是

0.0061,0.0123,band -> mcr
0.0062,0.0122,band -> orchestra
0.0063,0.0121,band -> mcr music

Tags: 文件csvband排序music情况orchestramcr
2条回答

这是熊猫的等价物。如果您想更快地访问该文件,可以检查如下内容:http://pythondata.com/working-large-csv-files-python/。本指南将帮助您建立csv数据库

import pandas as pd

data = '''\
0.0063,0.0121,band -> mcr music
0.0061,0.0123,band -> mcr
0.0062,0.0122,band -> orchestra'''

file = pd.compat.StringIO(data) # Replace with path/to/file
df = pd.read_csv(file, sep=',', header=None).sort_values(by=1, ascending=False)

for i in df.values:
    print(i)

#df.to_csv('path/to/outfile', index=False, header=False)

印刷品:

[0.0061 0.0123 'band -> mcr']
[0.0062 0.0122 'band -> orchestra']
[0.0063 0.0121 'band -> mcr music']

csv基本上是一个python数组(矩阵)。也就是说,您的数据实际上如下所示:

csv = [
    [0.0063, 0.0121, 'band -> mcr music'],
    [0.0061, 0.0123, 'band -> mcr'],
    [0.0062, 0.0122, 'band -> orchestra']
]

然后可以将ith列的排序看作sorting a list of tuples。你应该做:

csv = sorted(csv, key=lambda x: x[0])

或者,您可以使用array build in sort方法进行就地排序:

csv.sort(key=lambda x:x[0])

现在要打印可以在数组上迭代的每一行:

for line in csv:
    print(line)

要获得原始问题的输出(值以,分隔):

print(','.join(line))

相关问题 更多 >