2015-09-09 2 views
0

У меня есть 13 файлов csv для слияния. Я хотел попробовать pandas и python, но я боюсь.Panda объединяет несколько csv с одним общим столбцом

Существует 3 типа файлов ключ является 1) имеет столбцы ABCD 2) имеет столбцы ABCD (с не содержащие какой-либо из 1) 3) имеет колонки ABCDEFG (с, содержащий все из 1 и 2)

Как я могу объединить эти все в один csv, содержащий всю информацию из всех файлов?

+0

делает pd.concat помощи на всех? – acushner

+0

Я пробовал это раньше, но потом я обнаружил, что он не делает то, что мне нужно, поскольку он не будет проверять, был ли уникальный столбец уже в их или нет. –

ответ

0

Трудно написать это точно, не видя пример данных. Но это должно заставить вас начать.

import pandas as pd 
df = pd.read_csv('file1.csv') 
df = df.append(pd.read_csv('file2.csv')) #this one adds more rows to the dataframe 
df = df.join(pd.read_csv('file3.csv'), on=[a,b,c,d], how='left') # this one will add columns if they match data 
2

Вы должны сделать внешнее слияние следующим образом, используя встроенный в reduce method:

files = ['file1.csv', 'file2.csv', ...] # the 13 files 
dataframes = [ pandas.read_csv(f) for f in files ] # add arguments as necessary to the read_csv method 
merged = reduce(lambda left,right: pandas.merge(left,right,on='a', how='outer'), dataframes) 
+0

И чтобы вернуть это как CSV, я бы просто сделал merged.to_csv ('merged.csv') –

+0

Вы можете попробовать это и загрузить его с помощью excel или что-то еще, чтобы посмотреть, как он выглядит. Есть несколько способов сделать это. Вы также можете попытаться опубликовать некоторый ввод проб и ваш желаемый результат (может быть очень простой) – dermen

+0

Ввод почти случайный из-за огромного количества, но он похож на серийные номера и т. Д., Поэтому он содержит буквенно-цифровые и котировочные символы, так что dtype и how я должен был бы установить? –

Смежные вопросы