Сортировать CSV-файл без заголовков - PullRequest
0 голосов
/ 05 сентября 2018

Как отсортировать файл csv, если нет заголовков? Мои данные следующие, и я хочу отсортировать их по дате

14/09/2018      Manchester      Manchester United    Chelsea             
06/09/2018      Manchester      Manchester United    Tottenham Hotspur   
05/09/2018      Manchester      Manchester United    Liverpool           
13/09/2018      Chelsea         Chelsea              Manchester United   
10/09/2018      Chelsea         Chelsea              Tottenham Hotspur   
09/09/2018      Chelsea         Chelsea              Liverpool           
12/09/2018      Tottenham       Tottenham Hotspur    Manchester United   
08/09/2018      Tottenham       Tottenham Hotspur    Chelsea             
07/09/2018      Tottenham       Tottenham Hotspur    Liverpool           
11/09/2018      Liverpool City  Liverpool            Manchester United   
15/09/2018      Liverpool City  Liverpool            Chelsea             
04/09/2018      Liverpool City  Liverpool            Tottenham Hotspur 

Ответы [ 2 ]

0 голосов
/ 05 сентября 2018

Вы можете открыть файл и прочитать его в словаре, если ваши даты уникальны. Если нет, то вам нужно найти дополнительный ключ для сортировки.

def read_from_file(file_name):
    data = {}
    with open(file_name, 'r') as f:
        for line in f.readlines():
            datum = extract_data(line)
            data[get_key(datum)] = datum

def sort(data):
    return [data[key] for key in sort(data.iterkeys())]

В этом примере вам нужно реализовать два метода: extract_data(), который возьмет строку файла (в виде строки) и поместит ее в форму, с которой вы хотите работать (класс или словарь или еще что-нибудь) и get_key, который извлечет ваш уникальный ключ (который может быть вашей датой или датой плюс что-то еще). Обратите внимание, что get_key должен быть уникальным для каждого элемента в вашей таблице, поэтому вы должны убедиться, что это так. В противном случае сортировка по словарю не будет работать должным образом.

0 голосов
/ 05 сентября 2018

вы можете использовать панды для этого:

import pandas as pd
from datetime import datetime

df = pd.read_csv('dummy.csv', names=['Date', 'City', 'Home', 'Away']) # read in csv with header assignment to columns
df['Date'] = pd.to_datetime(df.Date) #convert 'Dates' column to datetime
df = df.sort_values(by='Date').reset_index() # sort by date and reindex

выход:

         Date            City               Home               Away
0       2018-04-09  Liverpool City          Liverpool  Tottenham Hotspur
1       2018-05-09      Manchester  Manchester United          Liverpool
2       2018-06-09      Manchester  Manchester United  Tottenham Hotspur
3       2018-07-09       Tottenham  Tottenham Hotspur          Liverpool
4       2018-08-09       Tottenham  Tottenham Hotspur            Chelsea
5       2018-09-09         Chelsea            Chelsea          Liverpool
6       2018-09-13         Chelsea            Chelsea  Manchester United
7       2018-09-14      Manchester  Manchester United            Chelsea
8       2018-09-15  Liverpool City          Liverpool            Chelsea
9       2018-10-09         Chelsea            Chelsea  Tottenham Hotspur
10      2018-11-09  Liverpool City          Liverpool  Manchester United
11      2018-12-09       Tottenham  Tottenham Hotspur  Manchester United
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...