Задать вопрос
@JRBRO

Как писать в csv в определенную колонку, а строки со второй?

Задача такая, писать переменные в разные столбцы и строки.

Number	A 	B	C	D	E	D
1	TRUE	0.78	1	1.52	FALSE	TRUE
2	FALSE	0.35	0	1.22	FALSE	TRUE
3	FALSE	0.14	1	2.64	FALSE	TRUE
4	TRUE	0.99	1	3.63	FALSE	TRUE
5	TRUE	0.12	1	2.33	FALSE	TRUE
6	FALSE	0.78	0	2.87	FALSE	TRUE
7	FALSE	0.35	0	1.22	FALSE	TRUE
8	FALSE	0.14	1	1.35	FALSE	TRUE
9	TRUE	0.99	1	5.62	FALSE	TRUE
10	TRUE	0.12	1	5.24	FALSE	TRUE


Один скрипт пишет Столбцы A, B
Второй C, D
Третий E, F.
Первая строка неприкосновенна

Переменная Number содержится в цикле каждого из них

Так вот, я понимаю как читать такой файл, но никак не могу понять как писать

Сделать три отдельных достаточно просто,

with open('file.csv', 'a') as f:
                    w = csv.writer(f)
                    w.writerow([(i), (res), (res2)])


Number	A 	B
1	TRUE	0.78
2	FALSE	0.35
3	FALSE	0.14
4	TRUE	0.99
5	TRUE	0.12
6	FALSE	0.78
7	FALSE	0.35
8	FALSE	0.14
9	TRUE	0.99
10	TRUE	0.12


Number	C	D
1	1	1.52
2	0	1.22
3	1	2.64
4	1	3.63
5	1	2.33
6	0	2.87
7	0	1.22
8	1	1.35
9	1	5.62
10	1	5.24


Number			E	D
1			FALSE	TRUE
2			FALSE	TRUE
3			FALSE	TRUE
4			FALSE	TRUE
5			FALSE	TRUE
6			FALSE	TRUE
7			FALSE	TRUE
8			FALSE	TRUE
9			FALSE	TRUE
10			FALSE	TRUE


Буду рад даже пальцу который тыкнет в нужную строку документации, т.к. мои запросы гуглу результата не дали(не отрицаю что могли быть неверными( "how to write in a specific column csv python"))
  • Вопрос задан
  • 384 просмотра
Подписаться 1 Простой 2 комментария
Решения вопроса 1
sheerluck
@sheerluck
import pandas as pd

d1 = {"A": ["TRUE", "FALSE", "FALSE", "TRUE"],
      "B": ["0.78", "0.35", "0.14", "0.99"]}

d2 = {"C": [1, 0, 1, 1],
      "D": [1.52, 1.22, 2.64, 3.63]}

df1 = pd.DataFrame(d1)
df2 = pd.DataFrame(d2)

print("********\n", df1)
print("********\n", df2)

df3 = pd.concat([df1, df2], axis=1)

print("********\n", df3)

# CSV
df3.to_csv('/tmp/out.csv', index=True)

# напечатает:
********
        A     B
0   TRUE  0.78
1  FALSE  0.35
2  FALSE  0.14
3   TRUE  0.99
********
    C     D
0  1  1.52
1  0  1.22
2  1  2.64
3  1  3.63
********
        A     B  C     D
0   TRUE  0.78  1  1.52
1  FALSE  0.35  0  1.22
2  FALSE  0.14  1  2.64
3   TRUE  0.99  1  3.63

# файл:
$ cat out.csv 
,A,B,C,D
0,TRUE,0.78,1,1.52
1,FALSE,0.35,0,1.22
2,FALSE,0.14,1,2.64
3,TRUE,0.99,1,3.63
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
ipatiev
@ipatiev
Потомок старинного рода Ипатьевых-Колотитьевых
Не нужно искать решение специфической задачи "как писать в колонку".
Это всё равно что отдельно искать в гугле ответы на вопросы "как есть борщ", "как есть солянку", "как есть щи".
Надо освоить несколько базовых понятий, и уже применять их для решения неограниченного круга задач.
В данном случае надо просто подумать - что такое файл, что такое csv файл, как можно организовать работу с несколькими колонками. А главное - понять, что файл всегда перезаписывается ЦЕЛИКОМ. То есть каждый скрипт должен писать все колонки, а не только свои.
И всё получится сделать, самыми простыми средствами.

Если оставить в стороне эпическую кривизну исходной задачи "несколько скриптов пишут в один файл", которая в итоге приведёт к полному удалению информации из файла, то по сути задача сводится к работе со списками.
Прочитал из файла список списков, заменил или добавил нужные значения, записал в файл. Не бином ньютона.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы