Ответы пользователя по тегу CSV
  • Почему два CSV файла после удаления нескольких строк читаются по разному?

    @o5a
    Потому что надо учитывать разделители колонок. Задается параметром sep у pd.read_csv/to_csv. По умолчанию он считается запятой у этих функций, так же как и у англоязычного Excel. Но в российской версии Excel по умолчанию используется точка с запятой - ;
    Поэтому видимо изначально этот файл был с разделителем - запятой, потому правильно читались колонки через read_csv, а затем Вы пересохранили (хотя не указали, как именно "на макбуке экспортировал его как .csv") видимо в русской локали, поэтому разделителями стала точка с запятой - отсюда перестал читаться через read_csv.
    Так что указывайте тот разделитель, который реально в вашем файле, чтобы читалось правильно:
    data = pd.read_csv(sys.argv[1], sep=';')
    Ответ написан
    Комментировать
  • Как записать в csv на новую строку?

    @o5a
    data = [
    ['13','2да','3нет','4впредкушение','53','654','7русский'],
    ['13','2да','3нет','4влюбленность','50','62','7русский']
    ]
    
    out = [','.join(row)+'\n' for row in data]
    
    with open('document.csv', 'a') as fd:
        fd.writelines(out)

    Но вообще для работы с csv есть встроенная библиотека, через нее удобнее работать напрямую, и можно задавать различные параметры файла (символ разделителя, обрамление кавычками и т.п.)
    import csv
    
    data = [
    ['13','2да','3нет','4впредкушение','53','654','7русский'],
    ['13','2да','3нет','4влюбленность','50','62','7русский']
    ]
    with open('document2.csv', 'w', newline='') as fd:
        writer = csv.writer(fd)
        writer.writerows(data)


    И вообще какое-то странное у Вас представление о формате csv. Зачем у каждого значения приписан его индекс? Обычного так не делается, пишутся просто сами значения, индекс итак известен.
    Ответ написан
    Комментировать
  • Как создать DataFrame?

    @o5a
    Подозреваю, что предполагалось сделать это:
    p=subprocess.Popen(['/usr/bin/python3', '/home/roman/PycharmProjects/uznaemfileID/fileid.py'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
    result=p.stdout.read()


    Только если это работа с питоновскими скриптами, правильнее было бы импортировать модуль и вызывать функции напрямую, без прослойки в виде subprocess.
    Ответ написан
  • Почему функция read_csv в pandas неправильно обрабатывает целочисленные и десятичные числа из CSV файла?

    @o5a
    header=None говорит о том, что строка заголовка у данных отсутствует (что не верно), поэтому он пытается разобрать первую строчку с названиями заголовков, как данные.

    укажите header=0
    Ответ написан
    6 комментариев
  • Как при записи в csv добавить в конец пустой елемент?

    @o5a
    Если речь про доп. разделитель после последнего значения, то можно использовать доп. параметр lineterminator=";\r\n" или же искусственно добавить пустую колонку, изменив строку
    spamwriter.writerow(data + [None])
    Ответ написан
    Комментировать
  • Как суммировать значения в словаре?

    @o5a
    Если речь про суммирование значения по каждому ключу, то можно так:
    print({key:sum(val) for key,val in dict.items()})
    Ответ написан
  • Как прочитать данные из файла .csv в numpy, пропустив нечисловые значения?

    @o5a
    Можно использовать np.genfromtxt(), ему можно передать массив из только нужных строк, заранее выкинув все ненужные. В простейшем случае можно сделать так (при желании использовать более точную проверку цифр):

    nums = '-0123456789'
    # выбираем только цифровые строки
    lines = [line for line in csv_file.readlines() if line[0] in nums]
    data = np.genfromtxt(lines, delimiter=",")
    Ответ написан
    Комментировать