Как отсортировать 1 столбец файла CSV и вывести строку? - PullRequest
0 голосов
/ 19 мая 2018

Мой 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

Ответы [ 2 ]

0 голосов
/ 19 мая 2018

Вот эквивалент в пандах.Если вы хотите более быстрый доступ к файлу, возможно, отметьте что-то вроде: 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']
0 голосов
/ 19 мая 2018

CSV - это массив массивов (матрица) Python.При этом ваши данные на самом деле будут выглядеть следующим образом:

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

Тогда вы можете подумать о сортировке по столбцу ith как сортировке списка кортежей .Вы должны сделать:

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

В качестве альтернативы вы можете использовать встроенный в массив метод sort, чтобы отсортировать по месту:

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

Теперь для печати каждой строки, которую вы можете перебратьмассив:

for line in csv:
    print(line)

Чтобы получить вывод в соответствии с заданным исходным вопросом (значения разделяются ,):

print(','.join(line))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...