2017-01-26 2 views
-1

У меня есть CSV-файл с 2-х столбцов (х, у) и 5653 строк отформатированных как этотДобавьте третий столбец в существующий CSV

0,0 
1,0 
2,0 
3,0 
4,0 
5,0 
.... 
102,0 
102,1 
101,1 
.... 
0,1 
0,2 
1,2 
.... 

Теперь я хочу, чтобы добавить третий столбец к нему из другого CSV с измеренными значениями, например, -89 и т. д., это средние значения. Это также 5653 строки и первый столбец этого файла? Теперь, как я могу прочитать первый файл прочитать второй файл и поместить его, как это

0,0,-89 
1,0,-89 
2,0,-89 
3,0,-89 
4,0,-90 
5,0,-90 
6,0,-89 
7,0,-89 
8,0,-89 
9,0,-89 

Так что я хочу значение такого же только в одном CSV

+1

Какую именно часть вы застряли? – glibdud

+0

Я могу писать файлы, но я не знаю, как добавить столбец к одному – Skat1337

ответ

0

Вы можете использовать библиотеку панда, которая строится для работы с табличными данными. типичный рабочий процесс:

import pandas as pd 
df1 = pd.read_csv("your_path") # df is a shorthand for dataframe, a name for tabular data. 

df2 = pd.read_csv("csv2") 

# concanating: http://pandas.pydata.org/pandas-docs/stable/merging.html 
result = pd.concat([df1, df2], axis=1) # join by row, not by column 
result.to_csv("path") 
+0

Это приводит к тому, что 'result.to_csv (« out.csv ») будет пустым – Skat1337

+0

Хорошо, он работает, но теперь я получаю файл csv со следующим выходом '10,11,0, -89.0' can not, я избавляюсь от индекса? – Skat1337

+0

есть опция на to_csv –

0

Вы можете использовать csv модуль, который в отличие от pandas не требует установки каких-либо сторонних библиотек. Вы можете просто zip два читателей:

import csv 

with open('in1.csv') as fin1: 
    with open('in2.csv') as fin2: 
     with open('out.csv') as fout: 
      r1 = csv.reader(fin1) # iterator over lists of strings 
      r2 = csv.reader(fin2) 
      w = csv.reader(fout) 
      for row1, row2 in zip(r1, r2): 
       w.writerow(row1 + row2[:1]) # row from 1 + first column from 2 
+0

Спасибо, это работает, но я предпочитаю работать с pandas – Skat1337