Как добавить столбцы в существующий CSV-файл? - PullRequest
0 голосов
/ 03 июля 2019

У меня есть этот код, который читает мои csv-файлы (p01_results, p02_results, .....), чтобы удалить некоторые нежелательные строки на основе его номера, и он работает.Прямо сейчас я пытаюсь добавить две колонки participantID и session.Для participantID я попытался прочитать имя файла csv, сохранить идентификационный номер (01,02, ...) и заполнить им столбец.Для session я пытался заполнить каждые 18 строк 1, 2, 3 и 4.

Я пытался использовать этот код в своем, но не работал:

test4 = ['test4', 4, 7, 10]

with open(data.csv, 'r') as ifile 
    with open(adjusted.csv, 'w') as ofile:
        for line, new in zip(ifile, test4):
            new_line = line.rstrip('\n') + ',' + str(new) + '\n'
            ofile.write(new_line)

import os



base_directory = 'C:\\Users\\yosal\\Desktop\\results'    
for dir_path, dir_name_list, file_name_list in os.walk(base_directory):
    for file_name in file_name_list:
        # If this is not a CSV file
        if not file_name.endswith('results.csv'):
            # Skip it
            continue
        file_path = os.path.join(dir_path, file_name)
        with open(file_path, 'r') as ifile:
            line_list = ifile.readlines()
        with open(file_path, 'w') as ofile:
            # only write these rows to the new file
            ofile.writelines(line_list[0])
            ofile.writelines(line_list[2:20])
            ofile.writelines(line_list[21:39])
            ofile.writelines(line_list[40:58])
            ofile.writelines(line_list[59:77])

Ответы [ 3 ]

0 голосов
/ 03 июля 2019

Я попытался добавить столбец в мой CSV-файл с помощью панд. Таким образом, вы можете попробовать что-то вроде этого. Сначала вы должны установить pandas, запустив "pip install pandas".

import pandas as pd
df = pd.read_csv('data.csv')  ## read  the csv file
df.set_index('S/N', inplace=True) ## you can set an index with any column 
                                  ##you have that already exists in your csv 
                                  ##in my case it is the "S/N" column i used 
df["test"] = ["values","you want","add"]
df.to_csv('data.csv')
0 голосов
/ 04 июля 2019

У меня ушло некоторое время, но я это сделал.


import os



base_directory = 'C:\\Users\\yosal\\Desktop\\results'    
for dir_path, dir_name_list, file_name_list in os.walk(base_directory):
    for file_name in file_name_list:
        # If this is not a CSV file
        if not file_name.endswith('results.csv'):
            # Skip it
            continue
        file_path = os.path.join(dir_path, file_name)
        with open(file_path, 'r') as ifile:
            line_list = ifile.readlines()
        with open(file_path, 'w') as ofile:
            ofile.writelines(str(line_list[0]).rstrip()+",participant,session\n")
            for x in range(2, 20):
                 ofile.writelines(str(line_list[x]).rstrip()+","+file_path[len(base_directory)+2:len(base_directory)+4]+",1\n")
            for y in range(21, 39):
                 ofile.writelines(str(line_list[y]).rstrip()+","+file_path[len(base_directory)+2:len(base_directory)+4]+",2\n")
            for h in range(40, 58):
                ofile.writelines(str(line_list[h]).rstrip()+","+file_path[len(base_directory)+2:len(base_directory)+4]+",3\n")
            for z in range(59 ,77):
                ofile.writelines(str(line_list[z]).rstrip()+","+file_path[len(base_directory)+2:len(base_directory)+4]+",4\n")


0 голосов
/ 03 июля 2019

Попробуйте прочитать CSV в список. Затем выполните цикл по каждому элементу списка (каждый элемент является строкой в ​​CSV) и добавьте строку с разделителем плюс нужную строку. Затем напишите новый CSV, названный по-другому или заменив старый, и просто используйте свой список в качестве входных данных.

...