2013-08-06 2 views
0

Я пару тысяч CSV файлов, где большинство из них имеют следующие столбцыпитон CSV интеллектуальный анализатор и столбец соответствия

threadSubject 
bccList 
sender_name 
recipient_names 
sender 
dateReceived 
date  
recipients 
subject 

К сожалению, в зависимости от CSV файл каждый столбец, если он присутствует может быть различной columnt номер, что усложняет синтаксический анализ.

Что мне нужно сделать, так это извлечь из входных CSV-файлов только эти выбранные столбцы и поместить их в один выходной файл.

Я новичок в python и уверен, что есть совершенно простой способ достичь этого, но я не могу понять это. Я не уверен, что следует использовать Панды или другой механизм.

В логическом коде должно работать более или менее.

for file in (all files in current folder); do 
    open file; 
    get header and find out at which positions are interesting columns 
    #or match by column name; 

    dump interesting columns into output file in the right order; 
    close file; 
done 

Хитрая часть меня get header...

ли какой-либо из вас есть какие-либо рекомендации, как сделать это в смарт вещий образом?

Я подумал о bash и проанализировал его вручную, но подумал, что может быть хорошей идеей научиться делать это в python с вашей помощью.

p.s. из-за этого мне нужно пройти все электронные письма за последние 5 лет и узнать, в какое время было отправлено первое электронное письмо и последнее электронное письмо в течение каждого дня. CSVs, которые я создал на основе файлов Thunderbird MSF, используя инструмент Mork. Как только я проведу этот синтаксический анализ CSV, мне нужно будет найти простой способ получить время первого электронного письма и последнего электронного письма в тот же день. BUt это еще одна история.

Заранее благодарим за все советы.

+0

Я настоятельно рекомендую заглянуть в библиотеку pandas и проанализировать ваши файлы, импортировав их в качестве dataframes и выполнив там манипуляции, порядок столбцов больше не будет иметь значения, если вы правильно проанализируете его. – simplicity

ответ

0

Если имена столбцов одинаковы во всех файлах, используйте csv.DictReader для выполнения задания.

Python csv.DictReader Documentation

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

import csv 
    file = open('Path_to_file','rb') 
    for record in csv.DictReader(file): 
     print record['Column_Name'] 

Надеюсь, это поможет.

+0

Большое спасибо. Это одна часть уравнения. Извините за немой вопрос, но как же объединить выбранные столбцы из нескольких файлов и сохранить их в один файл? Мне нужно объединить все выбранные столбцы по строкам. Я немного читал о python, но все еще немного смущен :( Это так отличается от C, bash и т. Д., И главная проблема для меня в том, что я не использовал для записи в python, поэтому не знаю все концепции; ( Может кто-нибудь из вас, пожалуйста, дайте мне еще несколько советов с примером? Чрезвычайно важно. – user2658716

+0

Проблема в том, что из интересных столбцов не все из них находятся в каждом файле. Как пропустить пустые поля и не вызывать ошибки на консоли? – user2658716

+0

Вам необходимо поддерживать ссылочную целостность при объединении данных по наборам данных. Мощность отношения может быть 1-1 или 1-M или MM - в этом возрастающем порядке сложности для обработки их.Есть ли у вас общие поля (например, ключевой столбец, такой как идентификатор сообщения электронной почты) в файлах, которые помогут вам сопоставить данные? – anset

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