У меня есть файл CSV, и когда я читаю его, импортируя библиотеку CSV, я получаю результат:

['exam', 'id_student', 'grade']`
['maths', '573834', '7']`
['biology', '573834', '8']`
['biology', '578833', '4']
['english', '581775', '7']`
# goes on...

Мне нужно отредактировать его, создав 4-й столбец под названием «Пройдено» с двумя возможными значениями: «Истина» или «Ложь», в зависимости от того, является ли оценка строки> = 7 (Истина) или нет (Ложь), а затем подсчитайте, сколько раз каждый студент сдал экзамен. Если невозможно отредактировать CSV-файл таким образом, мне нужно будет просто прочитать CSV-файл, а затем создать словарь списков со следующим выводом:

dict = {'id_student':[573834, 578833, 581775], 'passed_count': [2,0,1]}
# goes on...

Благодарность

0
Hernan 4 Фев 2022 в 13:53

2 ответа

Попробуйте использовать импорт csv в качестве кадра данных pandas

import pandas as pd
data=pd.read_csv('data.csv')

А затем используйте:

data['passed']=(data['grades']>=7).astype(bool)

А затем сохраните кадр данных в csv как:

data.to_csv('final.csv',index=False)
1
NITISH PANDEY 4 Фев 2022 в 14:04
Если ваш запрос удовлетворен, не забудьте проголосовать. Остальное дайте мне знать в комментариях.
 – 
NITISH PANDEY
4 Фев 2022 в 14:05
Вас попросили не использовать pandas.
 – 
greatvovan
4 Фев 2022 в 14:12
Прочитайте название пожалуйста
 – 
Hernan
4 Фев 2022 в 14:55

Переберите входные строки, дополните список полей каждой строки дополнительным элементом и сохраните его обратно в другой CSV:

with open('result.csv', 'w', newline='') as csvfile:
    csvwriter = csv.writer(csvfile)
    
    for row in source_rows:
        csvwriter.writerow(row.append(row[2] >= 7))

source_rows - это итерация, которая дает вам опубликованный вами вывод.

Если вам нужно заменить исходный контент, используйте os.remove()< /a> и os.rename() для этого .

0
Vladimir Ryabtsev 4 Фев 2022 в 14:11
source_rows не определен, плюс код не выдает ожидаемый результат
 – 
Hernan
4 Фев 2022 в 15:42