Как добавить еще один столбец с результатом в CSV файл?
filename = input('Enter name of file: ')
file = open(filename, 'r')
arr = []
arr1 = []
arr = file.readlines()
for i in arr:
arr1.append(i.strip().split(','))
#------Sorting--------------
for i in arr1:
sumprice = (int(i[1])*int(i[2]))
file.write(str(sumprice))
file.close
Программа должна добавлять в конец каждой строки файла результат - sumprice.
Вот файл:
potato,45,20,Belarus
kosyak,74,30,Kazahstan
joint,35,50,USA
vodka,68,23,Russia
tea,20,34,UK
bagget,50,40,France
Должно выйти вот так:
potato,45,20,Belarus,900
kosyak,74,30,Kazahstan,2220
joint,35,50,USA,1750
vodka,68,23,Russia,1564
tea,20,34,UK,680
salo,50,40,Ukraine,2000
Ответы (2 шт):
Автор решения: cauf
→ Ссылка
Во-первых, необходимо открыть файл повторно, на этот раз на запись, переписав полностью его содержимое. Код второй части будет примерно таким:
# открываем файл
with open(filename, mode='w') as fl:
# определяем буферный список
arr2 = []
# проходим по коллекции расделенных данных
for i in arr1:
# вычисляем произведение
sumprice = int(i[1])*int(i[2])
# соединяем новую строчку на основе предыдущиз данных с добавлением
# вычисленной суммы
line = ','.join(i.append(sumprice))
# добавляем строку в буферный список
arr2.append(line)
# соединяем все строки в один кусок текста
write_text = '\n'.join(arr2)
# записываем данные обратно в файл
fl.write(write_text)
Автор решения: MaxU
→ Ссылка
Откройте для себя модуль Pandas:
import pandas as pd # pip install pandas
filename = r"C:\temp\data.csv"
df = pd.read_csv(filename, header=None).add_prefix("col")
df = df.eval("new = col1 * col2")
df.to_csv(r"c:\temp\result.csv", header=False, index=False)
результат:
potato,45,20,Belarus,900
kosyak,74,30,Kazahstan,2220
joint,35,50,USA,1750
vodka,68,23,Russia,1564
tea,20,34,UK,680
bagget,50,40,France,2000
PS для любителей однострочников:
(pd
.read_csv(filename, header=None)
.add_prefix("col")
.eval("new = col1 * col2")
.to_csv(r"c:\temp\result.csv", header=False, index=False))